我正在尝试在我的Rails应用程序中创建一个菜单栏,以便在用户未登录时显示Login
,并Logout
加上他们可用的操作,即{{1} }},Admin
等。我尝试在我的应用布局中使用此代码(Users
中的application.html.haml
)
app/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?
布局的方法,或以某种方式让布局知道用户是否已登录?
答案 0 :(得分: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