提问人:Jay Enginer 提问时间:5/5/2023 更新时间:5/5/2023 访问量:72
在 devise 中调用 super 之后的双重渲染
double rendering after super is called in devise
问:
class CustomSessionsController < DeviseTokenAuth::SessionsController
def create
binding.pry
super
confirmed = true
binding.pry
if current_user.present? && confirmed
render json: { message: "removed" }, status: :ok ("won't render")
else
redirect_to new_user_session_url ("won't render")
end
end
def destroy
super
end
private
def after_sign_in_path_for(user)
redirect_to new_user_session_url
end
end
是否可以阻止超级渲染,以便其他渲染工作?
我已经尝试过after_sign_in_path_for就像设计推荐一样,但我仍然不断收到双重渲染错误。
与这篇文章类似。
答:
0赞
adamdboudreau
5/5/2023
#1
尝试设置 flash.now(:notice) = 'x' 或 flash[:warning] = 'y' 以获得正常渲染结果的 flash[:notice]。
0赞
sajinmp
5/5/2023
#2
您可以将代码复制到此文件,然后从中删除呈现方法。然后,您可以根据流程将其替换为渲染方法。Devise::SessionsController
你要做的就是在这里复制超级的代码并对其进行更改。而不是被调用 super,替换的代码将被执行。
评论