2010-09-09 4 views
0

Je suis en train d'écrire un itinéraire qui capture l'un à plusieurs entre les messages et les commentaires sur votre blog moyenneitinéraire billets/commentaires simples dans des rails 3

Ce que j'est actuellement post.rb

class Post < ActiveRecord::Base 
    has_many :comments 
end 

suivi d'un comment.rb (parmi toutes les autres configurations db, y compris post_id: entier pour commentaires)

class Comment < ActiveRecord::Base 
    belongs_to :post 
end 

Dans les routes et je suis en train d'utiliser

resources :posts do 
    resources :comments 
end 

mais je n'ai pas de chance - de l'aide d'un expert de rails 3?

Modifier

Quand je frappe l'action "show" de mon contrôleur de poste via cette URL

http://localhost:3000/posts/3

Je reçois une erreur de routage

No route matches {:controller=>"comments", :action=>"create"} 

En effet, de mes commentaires formulaire dans le modèle d'exposition de mon poste

<% form_for Comment.new do |f| %> 
<p> 
    <%= f.label :body, "new comment" %><br> 
    <%= f.text_area :body %> 
</p> 
<p><%= f.submit "add comment" %></p> 
<% end %> 

Ai-je besoin de modifier ma forme parce que, avant cette modification des routes quand je l'ai fait d'une simple vue de source de l'action a pour/commentaires/{id}

Edit # 2

J'ai remarqué qu'après que j'ai changé mes itinéraires pour ressembler à ce

resources :comments 
    resources :posts 

    resources :posts do 
    resources :comments 
    end 

Je reçois tout fonctionne sauf que mon commentaire ne sait pas créé post_id (en MySQL, le comm ent est persistant mais il ne sait pas à quel poste il appartient_to)

Serait-ce ma forme alors?

+0

Est-ce le ROR guide tutoriel? – Kevin

+0

L'exemple oui - mais j'essaye de le faire avec le framework 3.0 et trouvé cette route "example" dans les commentaires de mon application new rails (mais ça ne marche pas) –

+0

comment est ton chemin dans la vue? –

Répondre

2

Vous ressources de commentaires est défini comme une ressource imbriquée non pas comme ressource indépendante,

de sorte que le chemin généré exigent les informations de messages aussi bien. donc changez l'instruction form_for en

forme_pour [@ post, Comment.new] do | f |

http://guides.rubyonrails.org/routing.html, lisez ceci pour comprendre plus

et ce http://railscasts.com/episodes/139-nested-resources (utilise très ancienne version de rails)

+0

cela a fixé mon formulaire dans le modèle de show, mais est-il "valide" d'avoir les 3 ressources définies comme je le fais dans l'exemple ci-dessus? Si non, que suggérez-vous? –

+0

la première façon est le chemin de rails, mais parfois il devient assez compliqué avec des ressources imbriquées, donc les gens passent à ce que vous avez fait. Donc jusqu'à ce que vous sachiez mieux utiliser les rails. –

+0

et vous n'avez pas besoin de définir à nouveau "resources: posts". Avec n ° 1 ressources imbriquées, il est plus facile de gérer l'association et l'autorisation dans les modèles. mais dans # 2, vous aurez gérer cela. manuellement. alors faites votre choix –