2017-10-14 1 views
-1

Je travaille sur une application simple blog et je voudrais imbriquer les messages dans les blogs commeressources emboîtées ne pas honorer premier paramètre Rails 5 Rails 5

ressources: blogs font ressources: messages fin

si l'URL doit travailler/blogs /: blog_id/messages /: post_id exemple: http://wbhauck.com/blogs/1/posts/6

mais il montre aussi le même poste exact avec le blog 2 ... http://wbhauck.com/blogs/2/posts/6

J'ai testé et cela fonctionne aussi longtemps que blog_id est un blog valide. Si je mets http://wbhauck.com/blogs/5/posts/6 il jette une erreur.

Le code est disponible à https://github.com/wbhauck/BlogApp

Soit je ne comprends pas comment les ressources imbriquées travaillent ou il ne fonctionne pas correctement. Mais je pense que ça ne marcherait pas pour un post réalisé sur un blog différent.

J'ai lu le guide Ruby au http://guides.rubyonrails.org/routing.html#nested-resources mais cela ne donne pas d'exemple d'implémentation.

Toute aide est appréciée. Merci facture

Répondre

2

Dans votre PostsController vous devriez trouver après parmi les messages de blog

def set_post @post = @blog.posts.find(params[:id]) end

il jette exception si post n'est pas dans le blog en cours. Code dans routes.rb uniquement responsable de l'acheminement de l'URL vers le contrôleur, et ne rien faire de magique.

+0

Merci. C'était ça. Je mettais le poste mais directement avec '@post = Post.find (params [: id])' le changeant en '@post = @ blog.posts.find (params [: id])' l'a fixé . Merci! – WBHauck