2 つのレール ルーティング機能 (デフォルト パラメータとパラメータ マッチング) の組み合わせに問題があります。それぞれを個別に解決するのは簡単ですが、組み合わせると、結果は私が求めているものとはまったく異なります.
ルール:
get "/foobars(.:format)" => "foobars#index", :defaults => {:format => :json}, :format => /(xml|json)/
私が欲しいもの:
format
パラメータはオプションです- no
format
が含まれている場合、デフォルトのフォーマットはjson
format
が含まれている場合はxml
、それがjson
- など、サポートされていない
format
ものが渡された場合html
、このルート ルールは一致しません。
私が得ているもの:
format
パラメータはオプションです- no
format
が含まれている場合、デフォルトのフォーマットはjson
format
が含まれている場合はxml
、それがjson
- などのサポートされていない
format
ものが渡された場合baz
、このルート ルールは一致し、形式を に設定しますJSON
。
ポイントの違い#4
は、私が解決しようとしているものです。言い換えれば、私はこれを求めています:
GET /foobars => "foobars#index" with format `json`
GET /foobars.json => "foobars#index" with format `json`
GET /foobars.xml => "foobars#index" with format `xml`
GET /foobars.baz => "something#else" handled by another route rule lower down
ここで何が間違っていますか?