2011-04-08 46 views
0

所以我想根据@discussable类的类型动态地创建new_course_discussion_path(@discussable)或new_group_discussion_path(@discussable)。如何将消息(@discussable)传递给此方法?我尝试过:Rails将消息传递给动态方法

"new_#{@discussable.class.to_s.downcase}_discussion_path".constantize(@discussable) 

但这说“参数的错误数量(1为0)”。我是新来的铁轨。请帮忙!谢谢。

更新: 眼下,整机线条

= link_to '>New Discussion', "new_#{@discussable.class.to_s.downcase}_discussion_path".constantize(@discussable) 

回答

2
send "new_#{@discussable.class.to_s.downcase}_discussion_path", @discussable 

的路径助手是方法不类。他们可以从控制器,视图和帮助器方法访问,如果您不符合send调用的条件,它将调用自己的方法。

+0

谢谢。但它不起作用。这里是它所说的:语法错误,意外的tSTRING_BEG,期待keyword_do或'{'或'(' ... nk_to'>新讨论',发送“新_#{@ discussable.class.to_s ... 他们整体行是:'= link_to'>新的讨论',发送“new_#{@discussable.class.to_s.downcase}_discussion_path”,@discussable' – randomor 2011-04-08 02:44:25

+0

你的方式嵌入调用发送另一个方法调用,你需要(包括...),发送(...,@讨论)' – 2011-04-08 02:48:31

+0

是的!解决了这个问题。非常感谢Paul! – randomor 2011-04-08 02:51:46

1

您在查找Object.send method

+0

谢谢。但我盯着obj.send(symbol [,args ...])→obj 3分钟,仍然无法连接解决方​​案和文档。我想我仍然太浅,不能浏览文档。 – randomor 2011-04-08 02:57:29