加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 02:30:58 所属栏目:百科 来源:网络整理
导读:我知道如何在路由文件中设置嵌套资源…问题是如何使用相同的有效负载和更少的行来执行它. 假设我有一个BlogSite. BlogSite有很多帖子,但也有很多作者和很多日期. (这可能不是最好的例子,但请耐心等待). 要在帖子上做CRUD,我希望能够使用 /blog_sites/1/autho
我知道如何在路由文件中设置嵌套资源…问题是如何使用相同的有效负载和更少的行来执行它.

假设我有一个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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读