2010-09-27 6 views
0

Voici le flux je ...Rails 3 - Création d'un commentaire et retour le partiel avec juste le nouveau commentaire

D'abord, les messages jquery le nouveau commentaire sur le serveur:

$.post(this.action,$(this).serialize(),null,'script'); 

Ensuite, dans le contrôleur de commentaires:

def create 

    @comment = lots of stuff going on here but it works... 

    if @comment.save 
     flash[:notice] = "Successfully created comment." 
     respond_to do |format| 
     format.js 
    end 
    end 

Ok et c'est là où je suis coincé, le create.js.erb:

$(".cmtBox").html("<%=escape_javascript(render :partial =>"comments/comment")%>"); 

Et la partie:

<div class="cmtBox" id="comment_<%=comment.id%>"> 
<%=comment.content%> 
</div> 

Là où je suis coincé appelle la partie dans create.js.erb ... Comment puis-je passer ce que Rails a besoin pour remplir la partie? En ce moment je reçois l'erreur: "Appelé id pour nil, ce qui serait par erreur 4 - si vous voulez vraiment l'id de zéro, utilisez object_id"

Merci!

Répondre

1

Vous devez utiliser:

render :partial => @comment 

ou

render :partial => "comments/comment", :object => @comment 

ou

render :partial => "comments/comment", :locals => {:comment => @comment} 
+0

Pourquoi les 3 options? – AnApprentice

+0

Juste essayé tous les trois dont chaque erreur est la syntaxe correcte? exemple "$ (". cmtBox "). append (" <% = escape_javascript (render: partial => "commentaires/commentaire",: locals => {: comment => @comment})%> ");" – AnApprentice

+0

Votre _comment partiel est-il situé dans le répertoire/app/views/comments? – Yannis