2012-06-27 280 views
0

爲什麼其他不起作用?並打印只是「8」,但不是「10」。哪裏錯了?「如果」聲明不起作用

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

回答

9

||運算符返回第一個操作數,如果它不是nilfalse。否則它返回第二個操作數。所以,就你的情況而言,它總是迴歸'家'而不是'產品'。

你可能是指像

<%= controller.controller_name.in?('home', 'products') ? 8 : 10 %> 
5

簡單+ 1襯墊解決您的問題將類似於以下

if %w[home products].include? controller.controller_name 
4

因爲('home' || 'products')總是返回「家」。 ||是一個總是返回第一個非零和非錯誤語句的操作。在這種情況下,'home'。所以你的條件完全等於controller.controller == 'home'

你所要做的是:

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

因爲你是想象這將評估。

0

試試這個:

case controller.controller_name 
when "home" then 8 
when "products" then 8 
else 10 
end 
+0

我沒有回答他,而是提出了新的解決方案,我的錯誤。 – holaSenor