爲什麼其他不起作用?並打印只是「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
或false
。否則它返回第二個操作數。所以,就你的情況而言,它總是迴歸'家'而不是'產品'。
你可能是指像
<%= controller.controller_name.in?('home', 'products') ? 8 : 10 %>
簡單+ 1襯墊解決您的問題將類似於以下
if %w[home products].include? controller.controller_name
因爲('home' || 'products')
總是返回「家」。 ||
是一個總是返回第一個非零和非錯誤語句的操作。在這種情況下,'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
我沒有回答他,而是提出了新的解決方案,我的錯誤。 – holaSenor