Как использовать Link_to с вложенными ресурсами

Я полностью новичок в Rails.

Я создал веб-приложение, я могу получить доступ через /posts/123/comments/ или /posts/123/comments/new, но я не знаю, как использовать link_to в представлении индекса, чтобы показать конкретный комментарий, когда я пытаюсь его связать, появляется "no route" или "undefined symbol".

У меня есть вложенное отношение has_many между сообщениями и комментариями, определенными в моделях, и в routes.rb и post_comments GET /posts/:post_id/sensors(.:format) comments#index появляется, когда я выполняю маршруты рейка.

Как я могу это сделать?

Ответ 1

После выполнения всех ответов он полностью не работал, но я нашел способ его решить. В первый момент я использовал

<я > post_comments_url (@пост, комментарий)

где комментарий - это элемент внутри @post.each.

Он генерирует "странный" маршрут, используя. вместо /like "post/34/comments.2", я исправил его с помощью единственной формы:

post_comment_url (@post, comment)

Спасибо за помощь!

Ответ 2

Если вы определили вложенные ресурсы (и, конечно, связаны ваши модели Comment и Post)

resources :posts do
 resources :comments
end

Вы можете связать комментарий следующим образом

<!-- /posts/:post_id/comments/:id -->
<%= link_to 'Show', [@comment.post, @comment] %>

Я написал полный пример вложенных ресурсов в прошлом сообщении в блоге

Ответ 3

Получить имя метода из первого столбца

   rake routes

И передайте идентификаторы соответственно. И, конечно, суффикс имени метода с _path ir _url Чтобы узнать больше, посетите Rails guide

Ответ 4

В дополнение к ответу toch вы можете отлаживать вызов link_to с помощью консоли Rails.

Для этого вам нужно загрузить помощники вида в консоли:

irb(main):001:0> include ActionView::Helpers::UrlHelper
=> Object
irb(main):002:0> helper.link_to "posts", app.posts_path
=> "<a href=\"/posts\">foo</a>"

Другим инструментом, похожим на маршруты рейка для отладки маршрута, является: https://github.com/schneems/sextant