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" }