Как использовать 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