2013-06-05 3 views
0

J'ai trois modèles associés entre: Utilisateur, Message, Commentaire. Le commentaire est une ressource imbriquée avec Post.ressources imbriquées et méthode de construction pour créer une association

routes.rb

resources :posts do 
resources :comments 
end 

modèle utilisateur:

has_many :comments 

modèle post:

has_many :comments 

modèle Commentaire:

belonsg_to :user 
belonsg_to :post 

Le but est lorsque l'utilisateur crée un nouveau commentaire, il crée une association avec cet utilisateur. Donc, vous pouvez le voir comme utilisateur connaît tous les commentaires qu'il a fait.

comments_controller.rb

def create 
    @post = Post.find(params[post_id] 
    @comment = @post.comments.build[:comment] 
    current_user.comments >> @comment 
    .... 
end 

new.html.erb

<% form_for [@post, @post.comment.build] do |f| %> 
..... 
<% end %> 

Cela me donne une erreur aucun commentaire de la méthode. Que dois-je faire pour éviter cela?

+0

Qu'est-ce que le modèle Prog? et c'est 'belongs_to' pas' belons_to' – hrr

+0

Ref ce lien http://guides.rubyonrails.org/getting_started.html – visnu

+0

Vous avez fait une faute de frappe, cela pourrait-il être votre problème? Vous avez écrit '<% ​​form_for [@post, @ post.comment.build] do | f | %> 'au lieu de' <% form_for [@post, @ post.comments.build] fait | f | %> '. Donc 'comments' au lieu de' comment'. – Arjan

Répondre

1

Très probablement, vous manquez lettre "S" dans new.html.erb. Devrait être des commentaires:

<% form_for [@post, @post.comments.build] do |f| %> 
    ..... 
<% end %> 

S'il y a un peu plus de logique derrière vous n'a pas poster nous le faire savoir. Votre action de création a l'air bien. Essayez de regarder dans l'attribut student_id de la console, s'il est rempli avec ID que vous êtes bien.

0

En nouveau.html.erb fichier, vous utilisez "s" pour la méthode de construction.

Il devrait être,

<% form_for [@post, @post.comments.build] do |f| %> 
..... 
<% end %> 
Questions connexes