Проблема в том, что электронная почта добавляет '.'(точка) в URL, и это сбивает с толку рельсы, потому что он пытается найти формат "com" (если письмо заканчивается на .com)
Я добавил этот код в одно из моих приложений (яесть Люди, а не Пользователи), и это работает правильно, поэтому хитрость заключается в замене точки на что-то еще.Я решил заменить его на «@», так как другие символы, такие как - или +, действительны в адресах электронной почты.
file person.rb
def to_param
email.sub ".", "@"
end
def self.param_to_email(param)
segments = param.split '@'
host = segments[1..-1].join('.')
segments[0] + '@' + host
end
file people_controller.rb
def get_person
email = Person.param_to_email params[:id]
@person = Person.find_by_email email
end
Есть еще несколько советов о том, как это работает в http://jroller.com/obie/entry/seo_optimization_of_urls_in.
Спасибо за вопрос, я только начинаю с rails,так что это действительно помогает мне понять, как это работает:).