我在组合 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
我在这里做错了什么?