在rails中动态生成方法名称

时间:2010-06-14 22:06:52

标签: ruby-on-rails

我需要在我的视图中使用url帮助器生成链接,例如user_path(@user),catch是,在某些情况下我不知道我创建此链接的​​模型是什么,即它是用户还是商店或其他地方

我希望能够动态确定这个并调用相应的视图帮助器,目前我正在执行以下操作,但我想知道是否有更干燥的方法。

if object.class == "Store"
   store_path(object)
elsif object.class == "User"
   user_path(object)
...etc

2 个答案:

答案 0 :(得分:5)

当然,使用send来动态选择方法名称

send("#{object.class.name.downcase}_path", object)

答案 1 :(得分:2)

url_for(object)可以满足您的需求:

  

如果你代替哈希传递记录   (如活动记录或活动记录   Resource)作为选项参数,   你将触发指定的路线   那条记录。查找将发生   班级的名称。通过一个   Workshop对象将尝试使用   workshop_path路线。

如果您使用的是link_to,那么您只需将对象作为网址传递:

<%= link_to 'Title', object %>