如果用户已登录,请设置不同的Rails模板

我试图在用户登录时将布局设置为“私有”。如果我可以执行以下操作,那将是完美的:
layout 'private' if current_user
除了它给出了这个错误:
undefined local variable or method `current_user' for ApplicationController:Class
我也尝试在应用程序控制器中执行此操作:
before_filter :pick_the_layout

def pick_the_layout
  if current_user
    render :layout => "private"
  else
    render :layout => "public"
  end
end
这也没有运气,这是有道理的。谁能想到更好的方法来做到这一点?     
已邀请:
你可以这样做:
layout :determine_layout

private
  def determine_layout
    current_user ? "private" : "public"
  end
显然,如果用户没有登录,这取决于
current_user
nil
false
。 您可以在此处查看
layout
的使用文档: http://api.rubyonrails.org/classes/AbstractController/Layouts/ClassMethods.html#method-i-layout 这里有更多例子: http://api.rubyonrails.org/classes/AbstractController/Layouts.html     
嗯...也许吧
layout 'private' if defined?(current_user)
?     

要回复问题请先登录注册