0

ユーザーが他のユーザーのマイクロポストにコメントできるようにしたいのですが、次のエラーが表示され続けます: nil を正確な数値に変換できません

以下の View/comments/_form ファイルのタイムスタンプから来ています。何らかの理由で @comment.created_at が nil として返される

View/comments/_form:(このパーシャルはすべてのマイクロポストの最後に呼び出されます)

<span class="content"><%= @comment.content %></span>
<span class="timestamp">Said <%= time_ago_in_words(@comment.created_at) %> ago.</span
<%= form_for(@comment) do |f| %>
  <%= f.text_field :content, placeholder: "Say Something..." if signed_in? %>
<% end %>

ユーザー モデル:

attr_accessible :name, :email, :password, :password_confirmation #is this secure with password there?
attr_protected :admin   #attr_protected necessary?
has_many :microposts, dependent: :destroy
has_many :comments, :through => :microposts, dependent: :destroy

マイクロポスト モデル:

attr_accessible :comment #basically the content of the post
attr_protected :user_id
has_many :comments, dependent: :destroy

コメント モデル:

attr_accessible :content, :micropost
belongs_to :user
belongs_to :micropost
validates :user_id, presence: true
validates :micropost_id, presence: true
validates :content, presence: true
default_scope order: 'comments.created_at ASC'   #is this necessary?

コメント コントローラ:

def create
  @micropost = Micropost.find_by_id(params[:id])   #is this necessary?
  @comment = current_user.comments.create(:micropost => @micropost)
  redirect_to :back
end

ユーザーコントローラー:

def show
  @user = User.find_by_id(params[:id])
  @microposts = @user.microposts.paginate(page: params[:page])
  @micropost  = current_user.microposts.build
  @comments = @micropost.comments
  @comment = current_user.comments.create(:micropost => @micropost) #build, new or create??
end

ルート:

resources :users 
resources :microposts, only: [:create, :destroy] 
resources :comments, only: [:create, :destroy]

SQL:

"comment"=>{"content"=>"EXAMPLE"}} User Load (0.8ms) SELECT "users".* FROM "users" WHERE "users"."remember_token" = 'H09yZpAv5qhmT3ok5fXfnQ' LIMIT 1 マイクロポスト ロード (0.7 ms) SELECT "microposts".* FROM "microposts" WHERE "microposts"."id" IS NULL

4

2 に答える 2

0

@commentcreated_atに設定された新しいレコードである可能性が最も高いです。nil

于 2013-01-31T12:57:03.490 に答える