10

我一直在尝试找到这个答案,也许它太简单了......

在 Rails 中,遍历 activerecord 的结果的最佳方法是如何拉取您想要的特定字段?

我有一个用于提取所有记录的评论(命名帖子)控制器:

def index
@posts = Post.find(:all)
end

然后在索引视图中,当我使用 <%= @posts %> 时,我得到了所有数据......这很棒......

#<Post id: 1, user_id: "9", picture: nil, comments: "here's a first comment", title: nil, twitter: nl, frame: nil, created_at: "2012-05-09 04:21:16", updated_at: "2012-05-09 04:21:16"> #<Post id: 2, user_id: "9", picture: nil, comments: "here's a second comment", title: nil, twitter: "please", frame: nil, created_at: "2012-05-09 05:20:03", updated_at: "2012-05-09 05:20:03"> 

我现在如何遍历测试,以便视图显示来自评论和 created_at 字段的数据:

这是第一条评论,2012-05-09 04:21:16

这是第二条评论,2012-05-09 05:20:03

我已经尝试了以下并得到一个错误。

<% @posts.each do |c| %>
   <%= c.posts.comments %>
   <%= c.posts.created_at %>
<% end %>
4

2 回答 2

21

中的“c”表示集合@posts.each do |c|中的特定帖子对象。@posts

所以,从某种意义上说,你正在尝试做<%= post.posts.comments %>.

以下是代码的外观:

<% @posts.each do |p| %>
   <%= p.comments %>
   <%= p.created_at %>
<% end %>
于 2012-05-10T15:35:13.557 回答
10

把事情改成这样:

<% @posts.each do |post| %>
   <%= post.comments %>
   <%= post.created_at %>
<% end %>

我发现如果您将内部变量命名为 out 变量的单数形式,人们会更容易理解——因此@posts外部变为post内部。

祝你好运!

于 2012-05-10T15:37:32.577 回答