没有路线匹配“/ users / sign
我在我的应用程序中安装了设计,并在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 :users
和root :to => "home#index"
。
单击“退出”链接时,出现以下路由错误:
No route matches "/users/sign_out"
任何想法是什么导致了错误?
我认为退出的路线是一个DELETE
方法。 这意味着您的注销链接需要如下所示:
<%= link_to "Sign out", destroy_user_session_path, :method => :delete %>
你的:method => :delete
不包括:method => :delete
部分。 另外请注意,为了实现这个功能,您还必须在布局文件( application.html.erb
)中包含<%= javascript_include_tag :defaults %>
。
我在devise.rb中更改了这一行:
config.sign_out_via = :delete
至
config.sign_out_via = :get
它开始为我工作。
您可能没有包含jquery_ujs JavaScript文件。 确保你使用的是最新版本的jquery-ujs:https://github.com/rails/jquery-ujs和最后一个可用的文件:
rails generate jquery:install
你不应该有更多的rails.js文件。 如果你这样做,你可能会过时。 请确保此文件在config / application.rb中以默认值加载
config.action_view.javascript_expansions[:defaults] = %w(jquery.min jquery_ujs)
(同样,你不应该在这里有rails.js文件)。 最后,添加如Devise wiki(haml-style)中记录的链接:
= link_to('Logout', destroy_user_session_path, :method => 'delete')
一切都会好的。
链接地址: http://www.djcxy.com/p/47437.html上一篇: No route matches "/users/sign
下一篇: Devise call backs