2011-01-08 30 views
0

使用Rails 3.0.1和1.9.2的紅寶石-P0Rails的#classify奇怪的輸出

在軌控制檯我看到以下內容:

ruby-1.9.2-p0 > "login_controller".classify 
=> "LoginController" 

ruby-1.9.2-p0 > {:controller=>"login", :action=>"show"}[:controller]+"_controller".classify 
=> "login_controller" 

ruby-1.9.2-p0 > "login_controller" == {:controller=>"login", :action=>"show"}[:controller]+"_controller" 
=> true 

爲什麼classify返回 'login_controller' 爲?當紅寶石說,這兩個字符串相等的一個,和「的LoginController」其他的,

回答

0

您的操作順序是不正確的。 +之前

{:controller=>"login", :action=>"show"}[:controller] + ("_controller".classify) 

.以來結合:在第二個例子中,隱式支架會這樣。要修復它,你可以這樣做:

({:controller=>"login", :action=>"show"}[:controller] + "_controller").classify 

即,自己包括括號。

1

永遠不會失敗,

它的運算符優先級我需要做的:

({:controller=>"login", :action=>"show"}[:controller]+"_controller").classify