我在组合2个路由路由功能时遇到问题(默认参数和参数匹配)。每个都很容易解决,但结合起来时,结果并不是我想要的。
规则:
get "/foobars(.:format)" => "foobars#index", :defaults => {:format => :json}, :format => /(xml|json)/
我想要的是什么:
format
param是可选的format
,则将格式默认为json
format
,请确保其仅为xml
或json
format
,例如html
,则此路由规则不应匹配。我得到了什么:
format
param是可选的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
我在这里做错了什么?
答案 0 :(得分:4)
您是否尝试过将上一部分作为约束?
get "/foobars(.:format)" => "foobars#index", :defaults => {:format => :json}, :constraints => {:format => /(xml|json)/}