循环部分

Looping through a partial

我正在创建一个博客,并在索引上循环浏览每篇文章的部分内容,这样我就可以显示没有评论部分的 post,它看起来像这样:

<% 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

要解决您的第一个错误,请更改:

<h1><%= link_to @article.title, article_path %></h1>

收件人:

<h1><%= link_to @article.title, article_path(@article) %></h1>

article_path 帮助程序需要您尝试 link 的资源实例,以便它知道去哪里。

此外,每个 "articles" 的实例都没有保存在 @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 %>

然后在 _view_post_only.

中将您对 @article 的引用替换为 article