2011-01-08 5 views
0

utilisant des rails 3.0.1 et 1.9.2 rubis-p0Rails #classify sortie étrange

dans la console de rails Je vois ce qui suit:

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 

Pourquoi classify retour 'login_controller' pour ? l'un, et « LoginController » pour l'autre, lorsque Ruby affirme que les deux chaînes sont égales

Répondre

0

Votre ordre des opérations n'est pas correct. Dans le second exemple, les crochets implicites vont comme ceci:

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

depuis . se fixe avant +. Pour le réparer, vous pouvez le faire:

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

par exemple, inclure les parenthèses vous-même.

1

échoue jamais,

C'est la priorité de l'opérateur que je dois faire.

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