嵌套资源不支持Rails 5中的第一个参数

时间:2017-10-14 03:04:25

标签: ruby-on-rails ruby ruby-on-rails-5

Rails 5 我正在开发一个简单的博客应用程序,我想将帖子嵌入博客

资源:博客     资源:帖子   端

所以URL应该作为/ blogs /:blog_id / posts /: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

要么我不明白嵌套资源是如何工作的,要么它不能正常工作。但我认为这对于在不同博客中发布的帖子不起作用。

我在http://guides.rubyonrails.org/routing.html#nested-resources阅读了Ruby指南,但没有给出实现示例。

感谢任何帮助。 谢谢 纸币

1 个答案:

答案 0 :(得分:2)

在你的PostsController中,你应该在博客的帖子中找到帖子

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

如果帖子不在当前博客中,它将抛出异常。 routes.rb中的代码只负责将url路由到控制器,而不是做任何神奇的事情。

相关问题