使用可选参数进行路由

我在路由文件中添加了:

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”find路线。

你有一些想法,为什么它不工作?

谢谢 !

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

将可选部分放在括号之间 :

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

并删除第二条路线。

更新

以上的答案只适用于3号及以上的轨道。 反转两个路线定义解决了这个问题(见下面的Alessandro的评论)。