我有这个控制器代码:
def update
super
respond_to do |format|
format.html{redirect_to session[:redirect_to]}
end
end
我的类继承了这样的设计密码:
class Mobile::PasswordsController < Devise::PasswordsController
我收到此错误:
AbstractController::DoubleRenderError in Mobile::PasswordsController#update
Render and/or redirect were called multiple times in this action.
Please note that you may only call render OR redirect, and at most once per action.
Also note that neither redirect nor render terminate execution of the action, so
if you want to exit an action after redirecting, you need to do something like
"redirect_to(...) and return".
知道该怎么办?我知道它的重定向,但我不确定如何使它们正确。
谢谢!
答案 0 :(得分:2)
The update
method已经有了重定向。然后你调用你的重定向,这会导致错误。如果要进行自定义重定向,则需要覆盖不带super
调用的Devise方法,如下所示:
def update
self.resource = resource_class.reset_password_by_token(params[resource_name])
if resource.errors.empty?
flash_message = resource.active_for_authentication? ? :updated : :updated_not_active
set_flash_message(:notice, flash_message) if is_navigational_format?
sign_in(resource_name, resource)
respond_with resource, :location => #your_path_on_success
else
flash[:error] = resource.errors.full_messages
redirect_to #your_path_on_failure
end
end