内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用
我在我的application_controller.rb中有以下内容
def layout
unless request.subdomain.empty? && current_user.nil?
self.class.layout 'admin'
end
end
上面的代码似乎不起作用。但是当我做下面的事时,它确实有效。
def layout
unless request.subdomain.empty?
unless current_user.nil?
self.class.layout 'admin'
end
end
end
unless something
相当于if !something
。在你的情况下,这是
if !(request.subdomain.empty? && current_user.nil?)
随你
if (!request.subdomain.empty? && !current_user.nil?)
使用布尔代数可以将其重写为
if !(request.subdomain.empty? || current_user.nil?)
运用 unless
unless request.subdomain.empty? || current_user.nil?
如果想布局设置'admin'
,如果子域是不是空的和当前用户不是零:
def layout
if !request.subdomain.empty? && !current_user.nil?
self.class.layout 'admin'
end
end
改变你的逻辑来使用if
语句和肯定谓词,它会使代码中的逻辑更容易理解:
def layout
if request.subdomain.present? && current_user
self.class.layout "admin"
end
end
最好的做法是避免unless
除了最微不足道的情况外。