Rails路由,has_many和可选的嵌套资源健全性?

时间:2012-01-29 05:26:33

标签: ruby-on-rails ruby ruby-on-rails-3 routing ruby-on-rails-3.2

我知道如何在路径文件中设置嵌套资源......问题在于如何使用相同的有效负载以及更少的行来执行此操作。

假设我有BlogSite。 BlogSite有很多Posts,但它也有很多Authors和许多Dates。 (这可能不是最好的例子,但请耐心等待。)

要在Post上进行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

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

如何在保持routes.rb DRY和理智的情况下维护可选的参数URL

0 个答案:

没有答案