无路由匹配 "/users/sign_out",这是在Devise Rails 3 中遇到的问题。

38 浏览
0 Comments

无路由匹配 "/users/sign_out",这是在Devise Rails 3 中遇到的问题。

我在我的应用程序中安装了Devise,并在我的application.html.erb文件中应用了以下内容:

    <% if user_signed_in? %>
        Signed in as <%= current_user.email %>. This cannot be cheese?
        <%= link_to 'Sign out', destroy_user_session_path %>
    <% else %>
        <%= link_to 'Register', new_user_registration_path %> or <%= link_to 'Sign in', new_user_session_path %>
    <% end %>

我运行rake routes并确认所有路由都是有效的。

此外,在我的routes.rb文件中,我有devise_for:usersroot:to =>“home#index”

当单击“注销”链接时,我会收到以下路由错误:

No route matches "/users/sign_out"

有任何想法是什么导致了这个错误吗?

admin 更改状态以发布 2023年5月20日
0
0 Comments

我在devise.rb中修改了这一行:

config.sign_out_via = :delete

修改成了

config.sign_out_via = :get

这样我就能正常运行了。

0
0 Comments

我认为注销路由应该是通过 DELETE 方法完成的。这意味着你的注销链接应该像这样:

<%= link_to "Sign out", destroy_user_session_path, :method => :delete %>

你的链接没有包括 :method => :delete 部分。此外,请注意,为了使其工作,你必须在您的布局文件 (application.html.erb) 中包含 <%= javascript_include_tag :defaults %>

0