我正在创建一个博客,在索引上我循环浏览每篇文章的部分内容,以便我可以在没有评论部分的情况下显示帖子,它看起来像这样:
<% render partial: 'view_post_only', collection: @articles %>
将您带到部分_view_post_only:
<h1><%= link_to @article.title, article_path %></h1>
<p>
Written by <%= link_to @article.author.username, author_path(@article.author_id), class: "article-listing" %>
</p>
<% if @article.image.exists? %>
<p><%= image_tag @article.image.url %></p>
<% end %>
<p class="article-body"><%= @article.body %></p>
我在view_post_only的第一行收到此错误:
No route matches {:action=>"show", :controller=>"articles"} missing required keys: [:id]
最后,包含在我的routes.db中:
resources :articles do
resources :comments
end
答案 0 :(得分:1)
要解决第一个错误,请更改:
<h1><%= link_to @article.title, article_path %></h1>
要:
<h1><%= link_to @article.title, article_path(@article) %></h1>
article_path
帮助器需要您尝试链接的资源实例,以便知道要去哪里。
此外,您的每篇文章的实例&#34;未保存在@article
变量中。按照惯例,rails会将部分名称单一化,并为您提供访问该项目的方法。在这种情况下,约定会产生一个名为view_post_only
的方法(我认为)。因此,您可以在模板中将@article
替换为view_post_only
。像这样:
<h1><%= link_to view_post_only.title, article_path(view_post_only) %></h1>
这种惯例似乎在这种情况下效果不佳。为了使您的部分阅读更好,我明确说明您要将该项目称为项目:
<% render partial: 'view_post_only', collection: @articles, as: :article %>
然后在@article
中仅使用article
替换您对_view_post_only
的引用。