我在组合 2 个导轨路由功能(默认参数和参数匹配)时遇到问题。每一个都很容易独立解决,但是当结合起来时,结果并不完全是我所追求的。
规则:
get "/foobars(.:format)" => "foobars#index", :defaults => {:format => :json}, :format => /(xml|json)/
我想要的是:
format
参数是可选的- 如果没有
format
,则默认格式为json
- 如果
format
包含,请确保它只是xml
或json
- 如果
format
通过了不支持的,例如html
,则此路由规则不应匹配。
我得到了什么:
format
参数是可选的- 如果没有
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
我在这里做错了什么?