0

Я пытаюсь реализовать страницу сброса пароля с помощью утилиты.Метод обновления контроллера паролей

Чего я хочу достичь, это перенаправить страницу на другой маршрут после обновления пароля. Итак, я внес изменения в свой passwords_controller.rb на основе the documentation.

Мой контроллер выглядит следующим образом:

class Users::PasswordsController < Devise::PasswordsController 
    # basic is my html.erb file for layout purpose.... 
    layout "basic" 

    def edit 
    render :edit 
    end 

    def after_resetting_password_path_for(resource) 
    root_path 
    end 
end 

В моей routes.rb файле. Я включил маршрут для контроллера пароля:

devise_for :users, :controllers => { 
    :sessions => "users/sessions", 
    :passwords => "users/passwords", 
} 

Здесь, я могу получить доступ к моей точке зрения в app/views/passwords/edit.html.erb.

Проблема заключается в after_resseting_password_path_for методе (который переопределяется в passwords_controller.rb), который не получает казнен и я перенаправлен на ту же страницу в моем выходе вместо root_path. Также обновление не производится.

Это проблема с методом обновления, реализованным в Devise или у меня что-то не хватает?

+0

Вы проверили, обновление пароля не подведет проверки? – zeantsoi

+0

@zeantsoi yup e-mail проверен правильно. –

+0

Удачи вам в этом? Если предоставленные решения не затронули ваш вопрос, можете ли вы обновить свой вопрос, чтобы лучше понять вашу проблему? – zeantsoi

ответ

1

Я подозреваю, что - так как вы переопределены по умолчанию DEViSE PasswordsController - ваше edit действия смотрит на сообщение к update действиям в том же контроллере, но нет ни одного. Попробуйте обновить свой собственный контроллер на следующее:

class Users::PasswordsController < Devise::PasswordsController 

    layout "basic" 

    def edit 
    render :edit 
    end 

    def update 
    render :update 
    end 

    def after_resetting_password_path_for(resource) 
    root_path 
    end  

end 

В качестве альтернативы, я полагаю, что если вы должны были указать after_resetting_passwords_path в вашем ApplicationController, вы бы смогли обойти перекрывая Devise::PasswordsController полностью (хотя бы необходимо условно настроить ваш макет в ApplicationController).

+0

+1 за ответ ... я ценю ваш ответ. Но я боюсь, что мне нужно будет указать другое представление для обновления. На самом деле, я пытаюсь перенаправить его на другой путь, как только будет запущен обычный метод обновления пароля #. –

+0

До тех пор, пока вы объявили свой путь 'after_resetting_password_path_for', это решение должно работать. Проблема заключается не в том, что путь не перенаправляется должным образом после действия «update» - это то, что действие «update» никогда не находит в первую очередь (именно поэтому ваш пароль не обновляется). Добавление действия 'update' на ваш контроллер должно исправить ситуацию. Вы реализовали это решение, чтобы узнать, работает ли оно? – zeantsoi

+0

Я реализовал с использованием супер метода ........ но не визуализировал: обновление, так как у меня нет файла update.html.erb –

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