使用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说两个字符串相等时?
答案 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
即,自己包括括号。