Строка запроса Rails с точкой (или точкой). - PullRequest
4 голосов
/ 24 апреля 2011

Я сейчас пытаюсь разобраться с RoR.Я передаю две строки в мой контроллер.Одна - это случайная шестнадцатеричная строка, а другая - электронная почта.Проект предназначен для простой проверки электронной почты в базе данных.Проблема, с которой я сталкиваюсь, заключается в том, что я ввожу что-то подобное ниже для проверки своей страницы:

http://signup.testsite.local/confirm/da2fdbb49cf32c6848b0aba0f80fb78c/bob.villa@gmailcom

Все, что я получаю в хэше params :email, это 'bob'.Я пропустил . между gmail и com, потому что это может привести к тому, что совпадение не будет работать вообще.

Мое совпадение маршрутизации следующее:

match "confirm/:code/:email" => "confirm#index"

Какиекажется достаточно простым для того, что мне нужно.Я с трудом пытаюсь понять, в чем дело и как найти ответ.Буду признателен за любую помощь или руководство.

Ответы [ 2 ]

6 голосов
/ 24 апреля 2011

Ваша проблема в том, что Rails пытается интерпретировать .villa@gmailcom как спецификацию формата (например, .html или .json). AFAIK, стандартная работа (или, по крайней мере, та, которую я использую) заключается в добавлении этого к вашему маршруту:

:requirements => { :email => /.*/ }

Это заставляет Рельса не пытаться быть умным в том, что содержит :email.

Я не удивлен, что вы не смогли ничего найти, прибегая к помощи "@" или "." ничего полезного не делает.

5 голосов
/ 24 апреля 2011
match "confirm/:code/:email" => "confirm#index", :email => /.*/

Также было бы лучше установить get метод здесь, я думаю

get "confirm/:code/:email" => "confirm#index", :email => /.*/
...