使用可选参数进行路由

发布于 2024-12-03 03:58:12 字数 445 浏览 3 评论 0原文

我在路线文件中添加了:

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

滴情不沾 2024-12-10 03:58:12

将可选部分放在括号之间

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

并删除第二条路线。

更新

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

Put the optional parts between parenthesis:

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

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).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文