我只需要在发送重置密码说明时显示一条消息,我不需要重定向到新会话,我覆盖了controllerPassword但是当我放置redirect_to时,这个渲染出错了。
def after_sending_reset_password_instructions_path_for(resource_name)
flash[:notice] = "We have sent an email with the instructions to reset your password"
redirect_to new_user_password_path and return
end
这是错误: 在此操作中多次调用渲染和/或重定向......
我该如何解决?
答案 0 :(得分:0)
如果您完全从代码中删除redirect_to new_user_password_path and return
,它将停止重定向。但是,如果您这样做,它将无法显示您的闪存通知,直到用户手动刷新页面。从这里有两个修复:
答案 1 :(得分:0)
调用after_sending_reset_password_instructions_path_for
的控制器操作有render
或redirect_to
。
尝试删除redirect_to
中的after_sending_reset_password_instructions_path_for
,然后让调用操作处理它。
答案 2 :(得分:0)
我必须覆盖其他类:SessionsController<设计:: SessionsController 我不知道这是否是最好的解决方案,但对我有用。
这是我做的:
class SessionsController < Devise::SessionsController
# GET /resource/sign_in
def new
url = (request.env["HTTP_REFERER"]).to_s
path = url.split("?").first
if path == "http://#{Rails.application.secrets.domain_name}/users/password/new"
redirect_to new_user_password_path and return
end
self.resource = resource_class.new(sign_in_params)
clean_up_passwords(resource)
yield resource if block_given?
respond_with(resource, serialize_options(resource))
end
end