2011-01-08 77 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