Rails #classify奇怪的输出

时间:2011-01-08 20:58:56

标签: ruby-on-rails

使用rails 3.0.1和ruby 1.9.2-p0

在rails控制台中我看到以下内容:

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'为另一个,当ruby说两个字符串相等时?

2 个答案:

答案 0 :(得分:1)

永远不会失败,

这是运营商优先权。我需要这样做:

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

答案 1 :(得分:0)

您的操作顺序不正确。在第二个示例中,隐式括号如下所示:

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

因为.+之前绑定。要修复它,你可以这样做:

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

即,自己包括括号。