Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 当用户在Desive中注销时,如何避免重定向?_Ruby On Rails_Devise - Fatal编程技术网

Ruby on rails 当用户在Desive中注销时,如何避免重定向?

Ruby on rails 当用户在Desive中注销时,如何避免重定向?,ruby-on-rails,devise,Ruby On Rails,Devise,出于某种原因,我希望避免在用户注销后被重定向 这是 我已经试过: 要在的注销后覆盖路径,但我会得到没有路径匹配[DELETE]“/”或无法重定向到nil 操作前跳过:在我的会话控制器中验证用户是否已注销;但它仍然试图重定向 如何在不重定向的情况下销毁用户会话?您可以通过覆盖和\destroy方法更改行为: class MySessionsController < Devise::SessionsController def destroy signed_out = (Dev

出于某种原因,我希望避免在用户注销后被重定向

这是

我已经试过:

  • 要在的注销后覆盖路径,但我会得到没有路径匹配[DELETE]“/”或
    无法重定向到nil
  • 操作前跳过:在我的会话控制器中验证用户是否已注销;但它仍然试图重定向

如何在不重定向的情况下销毁用户会话?

您可以通过覆盖和
\destroy
方法更改行为:

class MySessionsController < Devise::SessionsController
  def destroy
    signed_out = (Devise.sign_out_all_scopes ? sign_out : sign_out(resource_name))
    # the `now: true` option sets the flash for this request 
    set_flash_message! :notice, :signed_out, now: true if signed_out
    respond_to do |format|
      format.all { head :no_content }
      format.any(*navigational_formats) { render 'something' }
    end
  end
end

你好@max,非常感谢你的帮助!我真的需要设置自己的控制器吗?我使用
rails生成designe:controllers用户
生成了designe的控制器,因此我试图在controllers/users/sessions\u controllers.rb中生成的
users::sessioncontroller
中实现您的解决方案。我还在我的路由器中添加了
design\u for:users
,这样就包括
design\u for:users,controller:{sessions:“my\u sessions”}
了,不是吗?如果这是正确的,那么我仍然会被重定向:(
design_for:users,controller:{sessions:“users/sessions”}
确保您没有多次调用
design_for
,因为最后一个调用将覆盖前者。我猜是这样的,因为您应该得到一个不断丢失的错误。您也不需要生成所有控制器。只需要您真正想要更改的代码。谢谢!非常感谢!我更改后它就工作了<代码>为:用户设计
在我的控制器中,使用
为:用户、控制器设计{会话:“用户/会话”,注册:“用户/注册”}
因为我只需要会话和注册控制器。我删除了
格式。任何(*导航格式){render'something}
行,因为我不需要渲染任何内容(否则,我将因缺少模板而出错)
# config/routes.rb
devise_for :users, controllers: { sessions: "my_sessions" }