web-dev-qa-db-ja.com

オプションのパラメーターを使用したルーティング

ルートファイルに追加しました。

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の一部として年を使用したいです

56
Alessandro DS

括弧の間にオプション部分を入れます

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

2番目のルートを削除します。

更新

上記の答えは、Rails 3以上。

104
Benoit Garret