【Rails3】deviseでログイン中は「Sign out」を表示して、ログアウトする

(環境:Mac OS X Leopard, Ruby1.9.2, Rails3.1.1)

【Rails3】deviseでユーザー認証機能の追加と設定の続き(機能追加)です。


ログイン中は「Sign out」を表示して、クリックしたらログアウト出来るようにしたいと思います。

app/views/layouts/application.html.erbへ以下を追加

<% if user_signed_in?%>
Signed in as <%= current_user.email %>. Not you? <%= link_to "Sign out", destroy_user_session_path %> <% end %>

出てきたSign outというリンクをクリックするとRouting Errorになりました。

No route matches [GET] "/users/sign_out"

$ rake routes

で確認してみます。

(省略)
destroy_user_session DELETE /users/sign_out(.:format) {:action=>"destroy", :controller=>"devise/sessions"}
(省略)

どうやらGETではなく、DELETEというHTTPメソッドで渡さなければならないみたいです。

これには:method => :deleteを追加すれば良いみたいです。

<% if user_signed_in?%>
Signed in as <%= current_user.email %>. Not you? <%= link_to "Sign out", destroy_user_session_path, :method => :delete %> <% end %>

今度はログアウトできました。

# ####
# ### At Bat Web Studio 出水ベースのWeb屋
# ## サイバーまめカン ストックメディア
# #