0

Loginユーザーがログインしていないときに表示するメニューバーを Rails アプリケーションに作成しようとしています。Logoutさらに、ユーザーが利用できるアクション( など) を表示します。このコードAdminUsersアプリケーションのレイアウト ( )application.html.hamlapp/views/layout

%ul{:class => 'nav'}
%li= link_to 'Home', :root
    - if logged_in?
        %li= link_to 'Logout', logout_url

ただし、次のエラーが表示されます。

NoMethodError in Session#new
undefined method `logged_in?' for #<#<Class:0x007f771bbe0f70>:0x007f771bc6a1a8>

メニュー自体以外のレイアウトを変更する必要はないので、ユーザーがログインしているかどうかに応じて異なるレイアウトをレンダリングしたくありません。logged_in?メソッドをapplicationレイアウトに表示することは可能ですか?レイアウトは、ユーザーがログインしているかどうかを知っていますか?

4

1 に答える 1

0

認証にDeviseを使用していると仮定すると、正しい方法はuser_signed_in?

編集 :

コントローラー メソッドは、コントローラーからのみ呼び出すことができます。ただし、そのメソッドの結果をインスタンス変数に格納することはできます。あなたの ApplicationController で

before_filter :login_check

def login_check
  @logged_in = logged_in?
end

ビューで、次のように @logged_in が true かどうかを確認できます

%ul{:class => 'nav'}
%li= link_to 'Home', :root
    - if @logged_in
        %li= link_to 'Logout', logout_url
于 2013-06-21T22:58:32.990 に答える