1

我正在使用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

在我的帖子模型中,我添加了:

acts_as_commentable

在我的帖子的 show.html.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"}

请帮我。谢谢。

4

1 回答 1

1

您尝试将 #id 方法调用到 nil 对象。您调用此#id 的唯一部分是当您调用时:

@comment = Comment.build_from(@post, @user_who_commented.id, "评论!")

@user_who_commented 是您的 current_user。你确定有一个 current_user 吗?

于 2011-02-04T08:13:16.473 回答