2011-02-03 11 views
1

私はacts_as_commentable_with_threading gemを使用しています。Rails 3 acts_as_commentable_with_threading gem

マイ_new.html.erb

<div class="adding_comment">&nbsp;</div> 
<%=form_for [commentable, Comment.new], :remote => false do |f|%> 
<%=f.hidden_field :commentable_id, :value=> @post.id %><br/> 
<%=f.label :title%> :<br/> 
<%=f.text_field :title%><br/> 
<%=f.label :subject%> :<br/> 
<%=f.text_field :subject%><br/> 
<%=f.label :body%><br/> 
<%=f.text_area :body, :style=>"width:320;height:80px"%><br/><br/> 
<%=f.submit "Add comment"%> 
<%end%> 

コメントコントローラ:私が追加した私のポストモデルでは

class CommentsController < ApplicationController 
def create 
    @post = Post.find(params[:comment][:commentable_id]) 
    @user_who_commented = current_user 
    @comment = Comment.build_from(@post, @user_who_commented.id, "Comment!") 
end 
end 

:私のポストのshow.htmlで

acts_as_commentable 

。 erb:

<%= render :partial => "comments/new", :locals => { :commentable => @post }%><br/> 
<h1>Comments</h1> 
<div id="comments"> 
<%=render :partial => 'comments/index',:locals => {:commentable=> @post, :comments => @comments}%> 
</div> 

しかし、私はエラーを取得していますボタン「送信」をクリックした後:

Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id 
Request: 
    {"utf8"=>"✓", 
"authenticity_token"=>"2GvCfaCB/qAxdh+1jJvcZ76jL9fdxP+h5qEIOClmNHk=", 
"comment"=>{"commentable_id"=>"1", 
"title"=>"et", 
"subject"=>"et", 
"body"=>"ewt"}, 
"commit"=>"Add comment", 
"post_id"=>"google-search-and-search-engine-spam"} 

を助けてください。ありがとう。

答えて

1

#idメソッドをnilオブジェクトにコールしようとしました。あなたが呼び出すときに、この#IDを呼び出す部分のみです:

@comment = Comment.build_from(@post、user_who_commented.id @、 "!コメント")

と@user_who_commentedはあなたのCURRENT_USERです。 current_userが確実にありますか?

+0

ありがとう、私は今日それを試し、結果についてここに書きます。 –