在设计中调用 super 后双重渲染

问题描述 投票:0回答:2
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

是否有可能阻止 super 渲染,以便其他渲染可以工作?

我已经按照设计建议尝试了 after_sign_in_path_for,但我仍然不断收到双重渲染错误。

类似于这篇文章。

设计注册后重定向:什么是超级

ruby-on-rails routes devise super
2个回答
0
投票

尝试设置 flash.now(:notice) = 'x' 或 flash[:warning] = 'y' 以获得正常渲染结果上的 flash[:notice]。


0
投票

您可以将代码从

Devise::SessionsController
复制到此文件,然后从中删除渲染方法。然后你可以根据你的流程用你的渲染方法替换它。

你要做的是在这里复制超级代码并对其进行更改。代替 super 被调用,替换的代码将被执行。

© www.soinside.com 2019 - 2024. All rights reserved.