我正在尝试在用户登录时将布局设置为“私有”。如果我可以执行以下操作,那将是完美的:
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
也没有运气,这是有道理的。谁能想到更好的方法呢?
答案 0 :(得分:12)
你可以这样做:
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
答案 1 :(得分:0)
layout 'private' if defined?(current_user)
?