1. ホーム
  2. ruby-on-rails

[解決済み] /users/sign_out" に一致するルートがない devise rails 3

2022-03-24 12:26:45

質問

自分のアプリに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"

エラーの原因について何か思い当たることはありますか?

解決方法を教えてください。

サインアウトするためのルートは DELETE メソッドを使用します。 つまり、サインアウトのリンクは次のようにする必要があります。

<%= link_to "Sign out", destroy_user_session_path, :method => :delete %>

Yoursは :method => :delete の部分です。 また、これを動作させるためには、以下の部分も含める必要があることに注意してください。 <%= javascript_include_tag :defaults %> をレイアウトファイルで使用します。 application.html.erb ).