运维开发网
广告位招商联系QQ:123077622
 
广告位招商联系QQ:123077622

ruby-on-rails – Rails路由,has_many和可选的嵌套资源健全性?

运维开发网 https://www.qedev.com 2020-06-13 20:29 出处:网络 作者:运维开发网整理
我知道如何在路由文件中设置嵌套资源…问题是如何使用相同的有效负载和更少的行来执行它. 假设我有一个BlogSite. BlogSite有很多帖子,但也有很多作者和很多日期. (这可能不是最好的例子,但请耐心等待). 要在帖子上做CRUD,我希望能够使用 /blog_sites/1/author/2/date/3/posts #all posts on site 1 from author 2 on
我知道如何在路由文件中设置嵌套资源…问题是如何使用相同的有效负载和更少的行来执行它.

假设我有一个BlogSite. BlogSite有很多帖子,但也有很多作者和很多日期. (这可能不是最好的例子,但请耐心等待).

要在帖子上做CRUD,我希望能够使用

/blog_sites/1/author/2/date/3/posts #all posts on site 1 from author 2 on date 3
/blog_sites/1/author/2/posts        #all posts on site 1 from author 2
/blog_sites/1/date/3/posts          #all posts on site 1 on date 3
/blog_sites/1/posts                 #all posts on site 1
/author/2/date/3/posts              #all posts from author 2 on date 3
/author/2/posts                     #all posts from author 2
/date/3/posts                       #all posts from date 3
/posts                              #all posts

这样任何过滤参数在URL中都是可选的.我知道你可以用类似的东西

get (/blog_sites/:blog_id)(/author/:author_id)(/date/:date_id)/posts => "posts#index"

但我不想失去使用嵌套资源路由的所有CRUD好处.目前,我必须复制大部分路由以使其工作,并且我正在寻找更好的方法来执行此操作:

resources :blog_sites do
    resources :authors do
        resources :dates do
            resources :posts
        end
        resources :posts
    end
    resources :dates do
        resources :posts
    end
    resources :posts
end

… 等等.它很快就会变得非常难以管理.

如何在保持路线的同时保持可选的参数URL .rb DRY和sane?

尝试一起使用范围和资源. Rails 3 routing with resources under an optional scope

scope 'blog_sites/:blog_id)(/author/:author_id)(/date/:date_id)' do 
    resources :posts
end

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号