我是Rails的新手,通常会为正常的unnested路线设置一个link_to
帮助器,如下所示:
link_to "Delete", article_path(article.id), method: :delete, data: {confirm: "Are you sure?"}
但是我正在学习嵌套路由,似乎我需要提供带有两个参数的路径,例如:
link_to "(Delete)", article_comments_path(comment.article_id, comment.id), method: :delete, data:{comfirm: 'Are you sure?'}
然而,这似乎不起作用。我已经看到你可以像这样格式化link_to
:
link_to 'Destroy Comment', [comment.article, comment], method: :delete, data: { confirm: 'Are you sure?' }
但这似乎让我感到困惑,因为没有定义路径,路径所需的值也没有直接指定。
是否可以格式化嵌套的link_to
路径,如上面的unnested路径,还是需要格式化,如第三个示例所示?如果是这样,有人可以尝试解释如何将此数组格式转换为Rails执行的URL吗?
由于
路线:
article_comment_path - DELETE - /articles/:article_id/comments/:id(.:format) - comments#destroy
答案 0 :(得分:5)
我认为您的路线类似于articles/:article_id/comments/:id
,所以您可以这样做:
<%= link_to "Delete", article_comments_path(article_id: comment.article_id, id: comment.id), method: :delete, data:{comfirm: 'Are you sure?'} %>
你的第3个链接应该是
<%= link_to 'Destroy Comment', polymorphic_path(comment.article, comment), method: :delete, data: { confirm: 'Are you sure?' } %>
有关详情,请查看Polymorphic routes
<强>更新强>
你只需要将本地人传递给你的部分:
<%= render "comment", locals: {article: comment.article, comment: comment} %>
然后使用
<%= link_to "Delete", article_comments_path(article.id,comment.id), method: :delete, data:{comfirm: 'Are you sure?'}%>