Как передать несколько аргументов во вложенные маршруты в 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?'}%>
Другие вопросы по тегам