我已经在我的应用程序上安装了设计,并在我的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路由,确认所有路由都是有效的。
同样,在我的路线上。我有belonge_for:users和root:to => "home#index"。
当点击“签出”链接时,我得到以下路由错误:
No route matches "/users/sign_out"
知道是什么导致了这个错误吗?
Add:
<%= csrf_meta_tag %> and
<%= javascript_include_tag :defaults %> to layouts
使用这些link_to标记
link_to 'Sign out', destroy_user_session_path, :method => :delete
or
link_to 'Sign out', '/users/sign_out', :method => :delete
在路由中添加:
devise_for :users do
get '/users/sign_out' => 'devise/sessions#destroy'
end
你可能没有包含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文件)。
最后,添加在维基百科上的链接:
= link_to('Logout', destroy_user_session_path, :method => 'delete')
一切都会好起来的。