「/users/sign_out」に一致するルートがありません。devise rails 3 質問する

「/users/sign_out」に一致するルートがありません。devise 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 :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) にも含める必要があることに注意してください。

おすすめ記事