没有路由匹配“/ users / sign_out”设计rails 3

没有路由匹配“/ users / sign_out”设计rails 3

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

<div id="user_nav">
    <% 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 %></div>

我跑了rake routes并确认所有路线都有效。

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

单击“注销”链接时出现以下路由错误:

No route matches "/users/sign_out"

是什么导致错误?


红颜莎娜
浏览 526回答 3
3回答

当年话下

我认为退出的路线是一种DELETE方法。这意味着您的退出链接需要如下所示:<%=&nbsp;link_to&nbsp;"Sign&nbsp;out",&nbsp;destroy_user_session_path,&nbsp;:method&nbsp;=>&nbsp;:delete&nbsp;%>你的不包括这:method => :delete部分。此外,请注意,要使其工作,您还必须包含<%= javascript_include_tag :defaults %>在您的布局文件(application.html.erb)中。

UYOU

我在devise.rb中更改了这一行:config.sign_out_via&nbsp;=&nbsp;:delete至config.sign_out_via&nbsp;=&nbsp;:get它开始为我工作。

湖上湖

您可能没有包含jquery_ujs javascript文件。确保您使用的是最新版本的jquery-ujs:https://github.com/rails/jquery-ujs以及可用的最新文件:rails&nbsp;generate&nbsp;jquery:install你应该不会有任何更多的rails.js文件。如果你这样做,你可能已经过时了。确保此文件在config / application.rb中加载了默认值config.action_view.javascript_expansions[:defaults]&nbsp;=&nbsp;%w(jquery.min&nbsp;jquery_ujs)(同样,你应该不会有rails.js这里提交)。最后,添加Devise wiki(haml-style)中记录的链接:=&nbsp;link_to('Logout',&nbsp;destroy_user_session_path,&nbsp;:method&nbsp;=>&nbsp;'delete')一切都会好起来的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Ruby