在Rails中自定义map.resources

时间:2009-09-21 01:58:01

标签: ruby-on-rails routing

假设我有一个Book模型,其中包含许多Page模型。

这样做的路由如下:

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 个答案:

答案 0 :(得分:1)

没有。您必须使用自定义路由。

随意从http://github.com/augustl/kii/blob/master/config/routes.rb

获取灵感

答案 1 :(得分:1)

正如八月所说,你需要使用自定义路由。 但对于页面,您不需要完整的资源路径。只有表演才有必要。

类似于:

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

将映射默认书籍网址以显示索引,一本书并添加/编辑它们。 还有一个页面

  

/书籍/ {book.id} / {PAGE_ID}

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

答案 2 :(得分:0)

您也可以尝试使用浅选项进行路由!