Rails / Devise - sign_out在Safari中不起作用

时间:2016-08-06 16:02:10

标签: ruby-on-rails devise

我在我的Rails应用程序中使用Devise gem进行用户身份验证。我发现sign_out辅助方法在Safari中无法使用,包括桌面和移动设备 - 它在Chrome等中运行良好。

我正在尝试强制已登录的用户在他们点击特定控制器操作时退出:

def new
    if user_signed_in?
        sign_out
    end
end

但这没有效果。 user_signed_in?destroy_user_session_path功能在视图中正常工作,如

<% if user_signed_in? %>
    <%= link_to('Logout', destroy_user_session_path, :method => :delete) %>
<% end %>

但是从控制器调用sign_out是不行的。

有没有人遇到过Devise的这类跨浏览器问题,有没有办法可以解决这个问题或以其他方式实现相同的功能?

1 个答案:

答案 0 :(得分:0)

进入config / application.rb并按}

设置serve_static_assets
true

或者

添加到routes.rb

config.serve_static_assets = true

然后,您的退出链接应该是这样的

match '/logout' => 'devise/sessions#destroy', :via => [:delete]

如果它不起作用,请尝试覆盖Devise :: SessionsController,如下所示:

<%= link_to 'Sign Out', logout_path %>