摘要嵌套控制器中使用的多态模型的删除链接

时间:2014-04-21 15:05:49

标签: ruby-on-rails ruby-on-rails-4 polymorphic-associations

问题

在嵌套控制器中使用的多态模型中,如何抽象删除链接的路径,以便我不对upload_permitted_user_path(@permissible, permitted_user)进行硬编码?

详情

我有一个名为permitted users的多态模型。基本上我的应用程序中有一堆对象,我们需要控制谁可以看到它。因此,postphoto等可以permitted users

我希望能够在#edit,photo#edit等页面上删除允许的用户。

我有这一行:

# Used in "posts#edit"
<%= link_to 'Delete', 
  post_permitted_user_path(@permissible, permitted_user), # This should not be hardcoded.
  method: :delete, 
  data: { confirm: 'Are you sure?' } %>

# Used in "photos#edit"
<%= link_to 'Delete', 
  photo_permitted_user_path(@permissible, permitted_user), # This should not be hardcoded.
  method: :delete, 
  data: { confirm: 'Are you sure?' } %>

如何抽象路径以便我不会硬编码<MY_TOP_LEVEL_CLASS>_permitted_user_path(@permissible, permitted_user)

1 个答案:

答案 0 :(得分:0)

找到答案(随意重新发布,我会接受:P)

使用“polymorphic routes”即可轻松创建多态链接。

您可以在任何视图中使用polymorphic_url([@top_resource, @next_level_resource])轻松生成正确的链接。

例如:

polymorphic_url([:admin, @article, @comment])变为admin_article_comment_url(@article, @comment)

另一个没有前导:admin的示例:

polymorphic_url([@article, @comment])变为article_comment_url(@article, @comment)