"如果"声明不起作用

its*_*lay 0 ruby if-statement

为什么其他不起作用?打印只是"8"但不是"10".哪里出错了?

<% if controller.controller_name == ('home' || 'products') %>8<% else %>10<% end %>
Run Code Online (Sandbox Code Playgroud)

Ser*_*sev 9

||如果不是nil或者,运算符返回第一个操作数false.否则返回第二个操作数.所以,在你的情况下,它总是返回'家'而不是'产品'.

你可能意味着像

<%= controller.controller_name.in?('home', 'products') ? 8 : 10 %>
Run Code Online (Sandbox Code Playgroud)


soh*_*tti 5

一个简单的+ 1衬垫解决方案将解决您的问题,如下所示

if %w[home products].include? controller.controller_name
Run Code Online (Sandbox Code Playgroud)