为什么其他不起作用?并且只打印“8”但不打印“10”。哪里错了?
<% if controller.controller_name == ('home' || 'products') %>8<% else %>10<% end %>
为什么其他不起作用?并且只打印“8”但不打印“10”。哪里错了?
<% if controller.controller_name == ('home' || 'products') %>8<% else %>10<% end %>
||
如果不是nil
or ,则运算符返回第一个操作数false
。否则返回第二个操作数。因此,在您的情况下,它总是返回“家”,而不是“产品”。
你可能的意思是
<%= controller.controller_name.in?('home', 'products') ? 8 : 10 %>
一个简单的 + 1 班轮解决方案可以解决您的问题,如下所示
if %w[home products].include? controller.controller_name
因为('home' || 'products')
总会回到“家”。||
是一个总是返回第一个非 nil 和非 false 语句的操作。在这种情况下,'home'
。所以你的条件正好等于controller.controller == 'home'
。
你想要做的是:
<% if (controller.controller_name == 'home' || controller.controller_name == 'products') %>8<% else %>10<% end %>
它将按照您的想象进行评估。
试试这个:
case controller.controller_name
when "home" then 8
when "products" then 8
else 10
end