2010-11-21 41 views
0

J'ai une mise à jour de l'état, et commente la table db.enregistrer l'objet de commentaires avec la relation avec une mise à jour de statut .build ruby ​​

Un utilisateur dispose de nombreuses mises à jour d'état et une mise à jour d'état comporte de nombreux commentaires. Similaire à Facebook, lorsqu'un ami utilisateur accède à la page de flux des utilisateurs (page d'affichage), il devrait pouvoir commenter les mises à jour de l'état des utilisateurs.

Je rencontre des problèmes lors de la sauvegarde d'un commentaire d'utilisateurs ... mon code est ci-dessous .. Je pense qu'il a quelque chose à voir avec le contrôleur de commentaires, méthode Create, "@comment = @ statusupdate.comments.build (params [ : comment]) "

toute indication est très appréciée! Merci!

class UsersController < ApplicationController 
    def show 
    @user = User.find(params[:id]) 
    @statusupdates = @user.statusupdates.paginate(:page => params[:page], :per_page => 25) 
    @statusupdate = Statusupdate.new  
    @comment = Comment.new 
    end 
end 

show.html.erb 
    <% form_for @statusupdate do |f| %> 
    <%= f.error_messages %> 
    <div class="field"> 
    <%= f.text_field :content %> 
    </div> 

<% @statusupdates.each do |s| %> 

    <%= s.content %><br /> 

    <% form_for @comment do |f| %> 
    <%= f.error_messages %> 
     <div class="field"> 
     <%= f.text_field :comment %> 
     </div> 
     <div class="field"> 
     <%= f.hidden_field :user_id, :value => current_user.id %> 
     </div> 
     <div class="actions"> 
     <%= f.submit "Submit" %> 
     </div> 
     <br><br> 
    <% end %> 
    <% end %> 

class CommentsController < ApplicationController 
    def create 
    @comment = @statusupdate.comments.build(params[:comment]) 
     if @comment.save 
     flash[:success] = "Comment created!" 
     redirect_to root_path 
    else 
     @feed_items = [] 
     render 'pages/home' 
    end 
    end 
end 

+0

Pouvez-vous donner plus de détails sur le problème? Comme quelle erreur donne Rails? – dteoh

Répondre

0

show.html.erb- J'ai changé la première ligne du formulaire de commentaires de mise à jour de statut:

<% form_for (s, s.comments.build) do |f| %> 
... 

class CommentsController < ApplicationController 
    def create 
    @statusupdate = statusupdate.find(params[:statusupdate_id]) 
    @comment = @statusupdate.comments.create(params[:comment]) 
    ... 

Je ne sais pas exactement ce qui se passe ici, mais cela a fonctionné pour moi ~ espère que cela aide quelqu'un out ~

0

Vérifiez le code html du formulaire pour vous assurer son droit. Voir aussi quels paramètres sont envoyés à l'action create.

La chose principale que je vois est que les formes pour la mise à jour d'état et les commentaires sont imbriqués, et tous les deux emploient le paramètre de bloc f. Cela pourrait rendre les choses très étranges (d'autant plus que la portée des paramètres de bloc diffère entre ruby ​​1.8 et 1.9). Il semble également que vous ne voulez pas que les formulaires soient imbriqués. Vous devriez également probablement corriger l'indentation dans votre code HTML.