在Rails中,您可以为一组路径(在命名空间内)指定默认值,如下所示:
Rails.application.routes.draw do
# Other routes
namespace :api, defaults: { format: :json } do
resources :users
end
end
如何将这样的默认值应用于应用程序中的所有路径?
答案 0 :(得分:3)
我低估了 Yury's
回答,因为它效率低下。
我最初假定(错误地)您想要设置constraint
(IE仅接受JSON
mime类型)。如果是这种情况,you'd benefit from this answer:
scope format: true, constraints: { format: 'json' } do
# your routes here
end
由于您希望设置default
,我仍然认为Yury's
答案效率低(您最好在中间件中设置mime类型,而不是控制器)。
因此,也许你可以use the following:
#config/routes.rb
scope format: true, defaults: { format: "json" } do
...
end
答案 1 :(得分:1)
基于Yury Lebedev's answer,我使用before_action
进行了此操作。使用此方法时,路线defaults
选项会有所不同:request.format
在使用application/json
时未设置为defaults
。
class ApplicationController < ActionController::Base
before_action :default_format_json
def default_format_json
unless params.key?(:format)
params[:format] = "json"
end
end
end
答案 2 :(得分:0)
我猜你可以全局使用before_action
:
class ApplicationController < ActionController::Base
before_action :set_format
def set_format
return unless request.format.nil?
request.format = :json
end
end