2012-05-18 2 views
3

Я использую Devise authentication gem с Rails.Удостоверение подлинности - без подтверждения после восстановления пароля

Как отобразить сообщение от devise.en.yml:

send_instructions: 'You will receive an email with instructions about how to reset your password in a few minutes' 

после восстановления пароля электронной почты было отправлено, вместо того, чтобы быть перенаправлены на корень сайта?

Обновление:

Я нашел интересный кусок кода в devise_controller.rb:

def successfully_sent?(resource) 
    notice = if Devise.paranoid 
    resource.errors.clear 
    :send_paranoid_instructions 
    elsif resource.errors.empty? 
    :send_instructions 
    end 

    if notice 
    set_flash_message :notice, notice if is_navigational_format? 
    true 
    end 
end 

Установка точек останова показывает, что правильные линии называют, : send_instructions присваивается к Уведомление, set_flash_message вызывается, но я не вижу результата всего этого, потому что меня сразу перенаправляют на корневой путь.

+0

проверьте, была ли вспышка [: уведомление] укомплектована + у вас есть блок, который отображает флеш-сообщения + просмотр журналов, возможно, у вас есть двойное перенаправление. –

+0

У меня есть блок [: notice], но понятия не имею, где может быть скрыто дополнительное перенаправление. – Paul

+0

add did u проверил, что вспышка [: notice] была воспринята? –

ответ

7

Посмотрите на исходный код для PasswordsController DEViSE в: https://github.com/plataformatec/devise/blob/master/app/controllers/devise/passwords_controller.rb#L42

Вы должны создать PasswordsController в вашем приложении, который наследуется от DEViSE :: PasswordsController, реализовать только after_sending_reset_password_instructions_path_for метод (resource_name) и при установке маршрутов расскажите изобрести, чтобы использовать контроллер

class PasswordsController < Devise::PasswordsController 
    protected 
    def after_sending_reset_password_instructions_path_for(resource_name) 
    #return your path 
    end 
end 

в маршрутах

devise_for :users, :controllers => { :passwords => "passwords" } 
+0

Я изучил ресурсы - есть строка «send_instructions», которая никогда не отображается, но если она есть, там может быть функциональность, которая показывает ее. Сегодня, экспериментируя с контроллерами, я непреднамеренно получил это сообщение, но не знаю, как это сделать. – Paul

+0

Возможно, это еще один вопрос. Скорее всего, когда вы перенаправляетесь на путь в after_sending_reset_password_instructions_path_, для этого пути перенаправляется на другую страницу, и флеш-сообщение будет потеряно. Просмотрите журнал/development.log – bcd

Смежные вопросы