2012-05-10 30 views
5

Tôi đã cố gắng đã tìm thấy câu trả lời này, và có lẽ nó quá đơn giản ...lặp thông qua kết quả kỷ lục hoạt động - Ruby on Rails

Trong đường ray, làm thế nào là cách tốt nhất để lặp qua kết quả từ activerecord kéo các trường cụ thể mà bạn muốn?

Tôi có một bộ điều khiển để lấy ý kiến ​​(tên bài viết) mà kéo tất cả hồ sơ:

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

Sau đó, trong giao diện chỉ mục, khi tôi sử dụng <% = @posts%> tôi nhận được tất cả các dữ liệu .. Nào là tuyệt vời ...

#<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"> 

Làm thế nào tôi bây giờ có thể lặp qua thử nghiệm để các xem hiển thị dữ liệu từ các ý kiến ​​và các lĩnh vực created_at:

Dưới đây là những nhận xét đầu tiên, 2012/05/09 04:21:16

Đây là nhận xét thứ hai, 2012-05-09 05:20:03

Tôi đã thử cách sau và gặp lỗi.

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

Vâng, lỗi bạn đang gặp phải là gì? – DVG

Trả lời

15

Các "c" trong @posts.each do |c| đại diện cho bài đối tượng cụ thể trong bộ sưu tập @posts.

Vì vậy, theo nghĩa nào đó, bạn đang cố gắng làm <%= post.posts.comments %>.

Sau đây là cách mã nên xem xét:

<% @posts.each do |p| %> 
    <%= p.comments %> 
    <%= p.created_at %> 
<% end %> 
+0

cảm ơn sự giúp đỡ của bạn! – user749798

+0

Không sao cả! Bây giờ chỉ cần đánh dấu câu trả lời là chấp nhận nếu bạn có thể. – messick

+0

đã hoàn tất. cảm ơn bạn! – user749798

8

Thay đổi điều này:

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

tôi thấy nó làm cho nó dễ dàng hơn để mọi người làm theo nếu bạn đặt tên cho biến bên trong như là duy nhất của biến ngoài - do đó @posts ở bên ngoài trở thành post ở bên trong.

Chúc may mắn!

Các vấn đề liên quan