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