ルートファイルには何がありますか?
入れてみてください
map.log_out 'logout', :controller => 'sessions', :action => 'destroy'
あなたのルートで。
次に、
<%= link_to "Sign out", log_out_url %>
サインアウトリンク用。
編集
そのすべては、ルーティングを指定する方法にかかっています。
ルーティングにmap.log_outが含まれているため、URL http:// localhost:3000 / logout urlがこれによって取得され、正しいアクションにルーティングされます。
あなたが持っている場合 :
<%= link_to "logout", :controller=> "sessions", :action=> "destroy" %>
これにより、 http:// localhost:3000/sessionのリンクが生成されます。ただし、ルーティングには何もしません。それでも正しいルートを指定する必要があります。
Railsは破棄アクションをURLに追加しないことに注意してください。( http:// localhost:3000 / session / destroyは作成されません。) destroyのアクションがある場合は、DELETEhttp動詞を使用して送信することを前提としています。何らかの理由で、完全ではなく、実際にはデフォルトでDELETE動詞を送信することもありません。
これを強制することができます:
<%= link_to "logout", {:controller=> "user_sessions", :action=> "destroy"}, :method => :delete%>
正しくルーティングしない限り、これは機能しません。以下をルートに入れると:
map.resource :session
次に、railsはすべての動詞のルーティングを生成し、DELETEを含むそれらのデフォルトのアクションを指定します。詳細については、こちらをご覧ください:外部からのRailsルーティング。
そのページ全体は、あなたが本当にそれを理解するまで何度も読む価値があります。Railsを理解するにはルーティングが重要です。
Sessionsのような単純なコントローラーの場合、log_outルートを指定してから、log_out_urlにリンクする方が簡単です。
(理にかなっていることを願って、睡眠不足が忍び寄っています!)