2010-06-23 2 views
2

Comment transmettre une valeur à un nom de méthode dynamique appelé sur un modèle de rails?Méthode dynamique ruby ​​transmettant une valeur

@model.send(dynamic_method_name.to_sym,123) 

Cela donne à l'erreur:

wrong number of arguments (1 for 0) 

Si je devais utiliser la même méthode comme celui-ci si:

@model.post_id = 123 

il fonctionne. Il y a donc une méthode "setter" pour la méthode post_id (et donc le nom de la méthode dynamique).

Comment puis-je transmettre une valeur à ce paramètre lorsque la méthode est dynamique?

merci!

Répondre

8

Vous devez ajouter le "=" à votre nom_méthode dynamique. Dans ruby, :post_id est le nom du getter, et :post_id= est le nom du setter. Le .to_sym n'est pas strictement nécessaire donc vous pouvez le faire:

@model.send("#{dynamic_method_name}=", 123) 
+0

parfait. Merci! – djburdick

+0

Vous êtes génial merci beaucoup pour cela! –

Questions connexes