使用可选参数进行路由

时间:2011-09-02 09:33:31

标签: ruby-on-rails routing rails-routing ruby-on-rails-2

我在路线文件中添加了:

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作为“?year = XXXX”的参数,但我想将年份作为URL的一部分

1 个答案:

答案 0 :(得分:103)

Put the optional parts between parenthesis

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

并删除第二条路线。

<强>更新

上述答案仅适用于3号及以上的轨道。反转两个路线定义解决了问题(参见下面的亚历山德罗的评论)。