2012-03-07 11 views
0

レール、私は非常に基本的なサインアップを持っていると、セットアップ実行中にログインして、私は「ログイン」を表示私のルート・ページの最上部にあるリンクを追加する方法かどうかを知りたいすべてのかユーザーがログインしているかどうかによって「サインアウト」します。ダイナミックログインおよびログアウトのリンクを追加すると、3.1

私はここで見つけてきた様々な方法を試してみましたが、それらは多くの場合、未定義のメソッドのエラーを作成し、それらに仕事を得るように見えることはできません。

これを作成する最も簡単な方法は何ですか?

ご協力いただきありがとうございます。

トム

答えて

0

あなたは、現在のユーザーのID(私はそれをuser_idを呼び出す)あなたはこのようにそれを行うことを保存するセッション変数を持っている場合:

<% if session[:user_id] %> 
    <!-- user is logged in --> 
    <%= link_to logout_path %> 
<% else %> 
    <!-- user is not logged in --> 
    <%= link_to login_path %> 
<% end %> 

あなたが持っているものです変更:

config/routes.rb: 

resources :users 

# login stuff 
controller :sessions do 
    get "login" => "sessions#new" 
    post "login" => "sessions#create" 
    delete "logout" => "sessions#destroy" 
end 

app/views/sessions/new.html.erb: 
# replace this line 
<%= form_tag new_session_path do %> 
# with 
<%= form_tag login_path do %> 
<%= link_to "Login", login_path %> ログアウトリンク:

ログインリンクは今の答えの <%= link_to "Logout", logout_path, :method => :delete %>

+0

あなたの迅速な返事Klumpをありがとう、これは私だけのものに近いステップを持っているようだ今、次のエラーである - #<#<クラスの未定義のローカル変数やメソッド 'logout_path」: 0x4a7b940>:0x4a78928> –

+0

あなたは 'logout_path'と' login_path'をlogin/logoutのあなたの行動へのルートに置き換えなければなりません。それらのroutes.rbにエントリを作成しましたか? MadeByV2 :: Application.routes.drawが GET "新しいセッション/" "ユーザー/新" GET リソースの操作を行います: – klump

+0

私の現在のroutes.rbをファイルには、次のようであるユーザー、:コントローラ=>:ユーザー 資源を:セッション –

0

あまりが、これRailscastは認証がレールにどのように動作するかについての学習に私にはとても役に立ちました。 RailscastはOmniAuthを使ってTwitterに固有のログインですが、プロセスはほとんど同じです。彼はあなたが彼のコードで尋ねた動的リンクを含んでいます。

http://railscasts.com/episodes/241-simple-omniauth

関連する問題