2012-03-03 12 views
3

access_controllersessions_controllerにリファクタリングしていて、destroyアクションが正常に動作していないようです。Rails 3セッションの破棄アクションを正しくルーティングする

ログインは正常に機能しているようですが、セッションからログアウトできません。私は、 "ログアウトは" 私は「/セッションにリダイレクトされます]をクリックすると

<%= link_to("Logout", :controller => "sessions", :action => 'destroy') %> 

routes.rbを

resources :sessions 

sessions_controller.rb

class SessionsController < ApplicationController 

    def new 
    end 

    def create 
    ... 
    end 

    def destroy 
    session[:user_id] = nil 
    flash[:notice] = "You are now logged out" 
    redirect_to root_url 
    end 
end 

:ここで私はログアウトを持っているリンクです/ destroy "というメッセージを表示して、" SessionsController "のアクション 'show'を見つけることができませんでした。破壊行為はIDを望むようですが、私はIDを渡す必要はありません、私はちょうどアクションを実行したいです。

+0

はhttp://stackoverflow.com/questions/2405635/how-to-を参照してください。空破壊セッションのレール – junky

+0

これは、セッションを完全に空にする方法(興味深い)を示していますが、私の問題はルーティングの問題です。私はここでルートを使用できるようにしたいが、 'resources:sessions' '/ sessions/destroy'を使ってIDを探す。 –

答えて

2

ああ、私はここで答えを見つけました:http://railscasts.com/episodes/250-authentication-from-scratch

を私は次のように私のルートを設定する必要があります。

get "log_out" => "sessions#destroy", :as => "log_out" 
get "log_in" => "sessions#new", :as => "log_in" 
resources :sessions 
+0

それは私のために働いた...ちょうど 'マッチ 'ajax_logout'を変更しました: 'セッション#破棄'を介して 'get''to' get 'ajax_logout' => 'セッション#破棄'、:= '' ajax_logout ''とすべての作品)答えてくれてありがとう! – Elmor