2011-02-03 2 views
1

Я использую act_as_commentable_with_threading gem.Rails 3 act_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"} 

Пожалуйста, помогите мне. Благодарю.

ответ

1

Вы пытаетесь вызвать метод #id на объект nil. Единственная часть, где вы называете это #ID, когда вы звоните:

@comment = Comment.build_from (@post, @ user_who_commented.id, "Комментарий!")

и @user_who_commented Ваш current_user. Вы уверены, что есть current_user?

+0

Спасибо, я попробую сегодня и напишу здесь о результатах. –

Смежные вопросы