问题
在嵌套控制器中使用的多态模型中,如何抽象删除链接的路径,以便我不对upload_permitted_user_path(@permissible, permitted_user)
进行硬编码?
详情
我有一个名为permitted users
的多态模型。基本上我的应用程序中有一堆对象,我们需要控制谁可以看到它。因此,post
,photo
等可以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)
?
答案 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)
。