Rails query string with a period (or full stop).

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-29 01:37:19

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!