为什么不起作用?打印只是“8”但不是“10”。哪里出错?
<% if controller.controller_name == ('home' || 'products') %>8<% else %>10<% end %>
答案 0 :(得分:9)
||
运算符返回第一个操作数,如果它不是nil
或false
。否则返回第二个操作数。因此,在您的情况下,它总是返回'家'而不是'产品'。
你可能意味着像
<%= controller.controller_name.in?('home', 'products') ? 8 : 10 %>
答案 1 :(得分:5)
针对您的问题的简单+ 1线性解决方案将类似于以下
if %w[home products].include? controller.controller_name
答案 2 :(得分:4)
因为('home' || 'products')
将始终返回'home'。 ||
是一个始终返回第一个非零和非假语句的操作。在这种情况下,'home'
。所以你的条件完全等于controller.controller == 'home'
。
您要做的是:
<% if (controller.controller_name == 'home' || controller.controller_name == 'products') %>8<% else %>10<% end %>
将根据您的想象进行评估。
答案 3 :(得分:0)
试试这个:
case controller.controller_name
when "home" then 8
when "products" then 8
else 10
end