アプリに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 :users
と がありますroot :to => "home#index"
。
「サインアウト」リンクをクリックすると、次のルーティング エラーが発生します。
No route matches "/users/sign_out"
エラーの原因は何でしょうか?
ベストアンサー1
サインアウトのルートはDELETE
メソッドだと思います。つまり、サインアウト リンクは次のようになります。
<%= link_to "Sign out", destroy_user_session_path, :method => :delete %>
あなたのものにはパーツが含まれていません:method => :delete
。また、これを機能させるには、<%= javascript_include_tag :defaults %>
レイアウト ファイル ( application.html.erb
) にも含める必要があることに注意してください。