代码之家  ›  专栏  ›  技术社区  ›  Karl

在Rails中自定义map.resources

  •  0
  • Karl  · 技术社区  · 16 年前

    假设我有一个图书模型,其中包含许多页面模型。

    这样做的路线如下:

    map.resources :books do |book|
        book.resources :pages
    end
    

    遵循Rails的默认设置很快就会导致问题。假设书1有10页。第2册的第一页将有以下路线:

    /books/2/pages/11
    

    这是一条非常糟糕的路线,更有意义的是:

    /books/2/pages/1
    

    甚至这个:

    /books/2/1
    

    是否有方法仍然使用map.resources,但得到如下结果:

    /books/{book.id}/pages/{page.page_number}
    
    3 回复  |  直到 16 年前
        1
  •  1
  •   August Lilleaas    16 年前

    不,您必须使用自定义路由。

    从中获得灵感 http://github.com/augustl/kii/blob/master/config/routes.rb

        2
  •  1
  •   Damien MATHIEU    16 年前

    正如August所说,您需要使用自定义路由。 但是对于页面,您不需要完整的资源路由。只有演出是必要的。

    比如:

    map.resources :books do |book|
        book.page ':page_id', :action => 'index'
    end
    

    将映射用于显示索引、一本书和添加/编辑它们的默认图书URL。 但也有一页

    /books/book.id/page_id_

    它用参数“page_id”映射到索引操作。您只需显示相应的图书页面;)

        3
  •  0
  •   BvuRVKyUVlViVIc7    16 年前

    您也可以尝试浅层选项为您的路线!