“如果”声明不起作用

时间:2012-06-27 18:36:56

标签: ruby if-statement

为什么不起作用?打印只是“8”但不是“10”。哪里出错?

<% if controller.controller_name == ('home' || 'products') %>8<% else %>10<% end %>

4 个答案:

答案 0 :(得分:9)

||运算符返回第一个操作数,如果它不是nilfalse。否则返回第二个操作数。因此,在您的情况下,它总是返回'家'而不是'产品'。

你可能意味着像

<%= 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
相关问题