2017-10-14 10 views
-1

のRailsの最初のパラメータを尊重ないと私はネストされたリソースは、私はシンプルなブログアプリケーションに取り組んでいる5 Railsの5

資源としての巣のブログでの投稿をしたい:ブログは リソースを実行します投稿 最後

ので、URLが/ブログ/として動作するはずです:blog_id /記事/: 例にpost_id: http://wbhauck.com/blogs/1/posts/6

をそれはまた、ブログ2と同じ正確なポストを示しています... http://wbhauck.com/blogs/2/posts/6

私はテストしましたが、blog_idが有効なブログである限り動作します。もし私がhttp://wbhauck.com/blogs/5/posts/6に入れば、それはエラーを投げます。

コードがhttps://github.com/wbhauck/BlogApp

どちらか私は、ネストされたリソースが作業しているか、それが正常に動作していないかを理解していないで利用可能です。しかし、私はそれが別のブログで作られたポストのためにはうまくいかないと思うでしょう。

私はRubyのガイドhttp://guides.rubyonrails.org/routing.html#nested-resourcesを読んだことがありますが、実装例はありません。

何か助けていただければ幸いです。あなたのPostsControllerの中 おかげ 法案

答えて

2

をあなたはポストが現在のブログではない場合、それは例外がスローされます

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

ブログの記事の中でポストを見つける必要があります。 routes.rbのコードは、URLをコントローラにルーティングするだけであり、何も魔法を使わない。

+0

ありがとうございました。それはそれだった。私は投稿を設定していましたが、 で直接設定していました。 '@post = Post.find(params [:id])' '@post = @ blog.posts.find(params [:id])' に変更しました。 。 ありがとう! – WBHauck