私はこれを広範囲に検索しました(おそらく間違って検索しています)が、これに関する答えが見つからないようです。私の目的は、データベース内の一連のコメントを繰り返し処理し、情報をビューに出力することです。残念ながら、私の.each do
ブロックは機能していないようです。
モデル/コメント.rb
class Comment < ActiveRecord::Base
attr_accessible :content, :photo_id, :user_id
belongs_to :user
belongs_to :photo
.
controllers/photos_controller.rb
def show
@photos = Photo.all
@photo = Photo.find(params[:id])
@user_likes = user_likes(@photo.id)
@comments = Comment.find_all_by_photo_id(@photo.id)
.
ビュー/写真/show.html.erb
<% if !@comments.blank? %>
<% @comments.each do |c| %>
<%= link_to c.user.name, c.user_id %><br />
<%= c.content %>
<% end %>
<% end %>
.
を使用する@comments.each do |c|, c.(anything)
と、何も返されません。Railsコンソールでもこれを確認しました。しかし、@comments.first.content
または@comments.first.user.name
私が探しているものを返します。コンテンツフィールドとユーザーフィールド.first
を返すことができるのに、何も返さないのはなぜですか?.each do |c|
Railsコンソールからの出力は次のとおりです。
1.9.3-p385 :072 > @comments.each do |c|
1.9.3-p385 :073 > c.content
1.9.3-p385 :074?> end
=> [#<Comment id: 1, user_id: 8, photo_id: 27, content: "lalala", created_at: "2013-04-09 15:36:22", updated_at: "2013-04-09 15:36:22">, #<Comment id: 2, user_id: 8, photo_id: 27, content: "abcd", created_at: "2013-04-09 15:42:00", updated_at: "2013-04-09 15:42:00">, #<Comment id: 3, user_id: 8, photo_id: 27, content: "abadsf", created_at: "2013-04-09 15:58:33", updated_at: "2013-04-09 15:58:33">, #<Comment id: 4, user_id: 8, photo_id: 27, content: "asdf", created_at: "2013-04-09 15:59:12", updated_at: "2013-04-09 15:59:12">]
1.9.3-p385 :075 > @comments.first.content
=> "lalala"