关于默认路由助手,是否有一些冗余?

时间:2011-05-27 21:03:09

标签: ruby-on-rails resources routing helper

假设post = Post.first,我可以用

写一个链接
link_to "First Post", post  # I guess Rails here understand to which model the
                            # object "post" belongs

但要编辑帖子,链接是

link_to "Edit First Post", edit_post_path(post)

是否可以编写如下内容:

link_to "Edit First Post", post, :type => :edit

这样就没有必要指定对象属于哪个模型?那不是DRYer吗?

2 个答案:

答案 0 :(得分:0)

您可以使用methodaction代替type

请参阅documentation

示例:

link_to "Profile", :controller => "profiles", :action => "show", :id => @profile
# => <a href="/profiles/show/1">Profile</a>

答案 1 :(得分:0)

这是我实施的可能解决方案。在application_helper.rb中添加方法:

def edit_path(item, other = {})
  send("edit_#{item.class.to_s.downcase}_path", item, other)
end

所以现在我可以创建编辑链接:

link_to "Edit Post", edit_path(post)
link_to "Edit User", edit_path(user)

而不是

link_to "Edit Post", edit_post_path(post)
link_to "Edit User", edit_user_path(user)

我觉得这是DRYer,但也许只是我。