Как передать несколько аргументов во вложенные маршруты в Rails?
Я новичок в Rails и обычно настраиваю 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
путь, подобный неподнесенному выше, или его нужно отформатировать, как показано в третьем примере? Если так, может кто-нибудь попытаться объяснить, как этот формат массива переводится в URL для Rails для выполнения?
Спасибо
Маршрут:
article_comment_path - DELETE - /articles/:article_id/comments/:id(.:format) - комментарии # уничтожить
1 ответ
Я думаю, что ваш маршрут будет что-то вроде 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?'} %>
И ваша третья ссылка должна быть
<%= 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?'}%>