2011-02-03 5 views
1

J'utilise acts_as_commentable_with_threading gem.Rails 3 acts_as_commentable_with_threading gem

Mon _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%> 

contrôleur Commentaires:

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 

Dans mon modèle post, j'ai ajouté:

acts_as_commentable 

Dans show.html de mon Post. 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> 

Mais après avoir cliqué sur « Soumettre » Je reçois l'erreur:

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"} 

S'il vous plaît aidez-moi. Merci.

Répondre

1

Vous essayez d'appeler la méthode #id sur un objet nul. La seule partie où vous appelez cette #id est lorsque vous appelez:

@comment = Comment.build_from (@post, @ user_who_commented.id, "Commentaire")

et @user_who_commented est votre current_user. Êtes-vous sûr qu'il y a un current_user?

+0

Merci, je vais essayer aujourd'hui, et écrire ici sur les résultats. –

Questions connexes