问题
I am currently trying to get a handle on RoR. I am passing in two strings into my controller. One is a random hex string and the other is an email. The project is for a simple email verification on a database. The problem I am having is when I enter something like below to test my page:
http://signup.testsite.local/confirm/da2fdbb49cf32c6848b0aba0f80fb78c/bob.villa@gmailcom
All I am getting in my params hash of :email
is 'bob'
. I left the .
between gmail
and com
out because that would cause the match to not work at all.
My routing match is as follows:
match "confirm/:code/:email" => "confirm#index"
Which seems simple enough for what I need. I am having a hard time trying to figure out what the deal is and really how to even search for an answer. Any help or guidance would be greatly appreciated.
回答1:
Your problem is that Rails is trying to interpret .villa@gmailcom
as a format specification (such as .html
or .json
). AFAIK, the standard work around (or at least the one I use) is to add this to your route:
:requirements => { :email => /.*/ }
This tricks Rails into not trying to be clever about what :email
contains.
I'm not surprised that you couldn't find anything, googling for "@" or "." doesn't do anything useful.
回答2:
match "confirm/:code/:email" => "confirm#index", :email => /.*/
Also it would be better to set get
method here, I think
get "confirm/:code/:email" => "confirm#index", :email => /.*/
来源:https://stackoverflow.com/questions/5768326/rails-query-string-with-a-period-or-full-stop