Rails路由约束不按预期工作

我今天早些时候问过这个问题,关于将所有路由包装成默认的json格式。 我本可以发誓它早点工作但我可能错了。

怎么运作:

resources :insurances, only: [:index, :show], :defaults => { :format => 'json' } 

但这不是:

 constraints format: :json do resources :insurances, only: [:index, :show] end 

我是否遗漏了约束如何运作的基本内容?

块格式的约束检查Request对象,有时将值作为字符串返回。 使用以下代码将与您的:defaults示例相同 – 检查rake routes应在每个资源路由上显示{ :format => 'json' }选项。

 constraints format: 'json' do resources :insurances, only: [:index, :show] end 

如果您更喜欢使用符号而不是字符串格式,可以通过lambda来实现:

 constraints format: lambda {|request| request.format.symbol == :json } resources :insurances, only: [:index, :show] end 

资料来源: http : //guides.rubyonrails.org/routing.html#request-based-constraints