0

在 Rails 3.2 应用程序中,我可以通过执行以下操作来干燥包含指向当前对象的链接的视图代码

#helper
def current_url(new_params)
  url_for params.merge(new_params)
end

#shared partial
<%= link_to "JSON", current_url(:format=>:json) %>

但是如果我需要链接到嵌套资源怎么办?例如,对用户模型和对象模型都可评论的多态评论模型。这是使用嵌套路由设置的,因此要链接到我将使用的评论视图

#user view
<%= link_to "User's Comments", user_comments_path(@user) %>
#object view
<%= link_to "Object's Comments", object_comments_path(@object) %>

有没有办法在不将局部传递给局部的情况下将其干燥?我想要类似的东西

#shared/_comments_link.html.erb
<%= link_to "#{resource.class.name}'s Comments", #{resource}_comments_path(#{resource}) %>

但是我看不到如何让 url_helper 知道父类是什么。

4

1 回答 1

0

助手看起来像这样

def link_to_comments(resouce)
  name = "#{resource.class}'s Comments"
  path = send :"#{resource.class.name.underscore}_comments_path", resource
  link_to name, path
end
于 2013-06-01T13:01:24.997 回答