70

我在路由文件中添加:

map.show_book "/show_book/:name/year/:year", :controller => "book", :action => "show_version"

我还补充说:

map.show_book "/show_book/:name", :controller => "book", :action => "show_version"

显示最新的书籍而不指定年份。

但它不起作用,如果我没有通过一年,它在“show_book/NAME”中找不到路线。

你有什么想法为什么它不起作用?

谢谢 !

PS。我知道我可以将年份用作“?year=XXXX”的参数,但我想将年份用作 URL 的一部分

4

1 回答 1

129

将可选部分放在括号之间

map.show_book "/show_book/:name(/year/:year)", :controller => "book", :action => "show_version"

并删除第二条路线。

更新

以上答案仅适用于rails 3及以上。颠倒两个路由定义解决了这个问题(见下面亚历山德罗的评论)。

于 2011-09-02T09:35:16.583 回答