使用可选参数进行路由
我在路线文件中添加了:
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”中找到路线。
您知道为什么它不起作用吗?
谢谢 !
附言。 我知道我可以使用年份作为“?year=XXXX”的参数,但我想使用年份作为 URL 的一部分
I added in the route file:
map.show_book "/show_book/:name/year/:year", :controller => "book", :action => "show_version"
I also added:
map.show_book "/show_book/:name", :controller => "book", :action => "show_version"
to show the latest book without specifying the year.
But it doesn't work, it cannot find the route in "show_book/NAME" if I don't pass the year.
Do you have some ideas why it doesn't work ?
THANKS !
PS.
I know that I can use year as parameter with "?year=XXXX", but I want to use the year as a part of the URL
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
将可选部分放在括号之间:
并删除第二条路线。
更新
以上答案仅适用于 Rails 3 及以上版本。颠倒两个路由定义解决了问题(请参阅下面亚历山德罗的评论)。
Put the optional parts between parenthesis:
and remove the second route.
Update
The above answer is only for rails 3 and above. Inverting the two routes definitions fixed the problem (see Alessandro's comment below).