Rails3 + Devise: edit_password_url выдает http//www.blah.com (без двоеточия перед http!)

Когда пользователь по какой-либо причине получает ссылку для смены пароля в нашем приложении с нашего рабочего сервера, он получает абсолютный URL-адрес без двоеточия http://. В результате люди жалуются, что ссылка не работает.

Проблема возникает только в моей производственной среде, но у меня есть этот набор в /config/environments/production.rb:

config.action_mailer.default_url_options = { :host => 'http://www.blah.com' }

Поэтому я не уверен, в чем может быть проблема. Я также обыскал весь сайт в поисках строки «http//», чтобы убедиться, что это просто опечатка в какой-то настройке, но не в костях.

Сам confirmation_instructions.html.erb остается нетронутым, и ссылка генерируется как таковая:

<p><%= link_to 'Confirm my account', confirmation_url(@resource, :confirmation_token => @resource.confirmation_token) %></p>

Итак, что за хрень может заставить мой сервер отказаться от : from http://?? Кто-нибудь когда-нибудь сталкивался с этой проблемой раньше? Любые теории о том, как это исправить? Заранее спасибо!


person John Hutch    schedule 15.06.2011    source источник


Ответы (2)


Я тоже столкнулся с этой проблемой. Проблема (как ни странно) в том, что вы используете полный URL-адрес в default_url_options (:host => 'http://www.blah.com'). Если вы поместите www.blah.com вместо него, он сработает. Я столкнулся с этой проблемой прошлой ночью, и это было самым быстрым решением для меня.

person tibbon    schedule 30.03.2012

Создайте новый расширенный почтовик Devise::Mailer и переопределите его методы:

def reset_password_instructions(record)
end
def confirmation_instructions(record)
end
def unlock_instructions(record)
end

Далее идем в config/initializers/devise.rb и убираем хэши перед config.mailer Ставим в это место свой собственный почтовик.

Это все

person Eraden    schedule 12.08.2011