我有一些API的路由都具有相同的默认值(format: :json
):
namespace :api do
namespace :v1 do
resources :users, only: [:index, :show, :update], defaults: { format: :json }
resources :items, only: [:index, :show, :update, :destroy], defaults: { format: :json }
resources :posts, only: [:index, :show, :update], defaults: { format: :json }
resources :comments, only: [:index, :show, :update], defaults: { format: :json }
resources :flags, only: [:index, :show, :update, :create], defaults: { format: :json }
end
end
有没有办法重构/干掉代码,只为这一组路由在一个地方设置defaults
(甚至only
)?该应用程序还在其他路线上提供HTML,因此它不能成为整个应用程序的一揽子设置。
答案 0 :(得分:1)
在命名空间级别移动defaults: {format: :json}
和常见only
选项。命名空间可以选择它们。
namespace :api, defaults: { format: :json }, only: [:index, :show, :update] do
namespace :v1 do
resources :users
resources :items, only: [:index, :show, :update, :destroy]
resources :posts
resources :comments
resources :flags, only: [:index, :show, :update, :create]
end
end
答案 1 :(得分:0)
您可以使用如下的迭代器:
[:users, :items, :posts, :comments, :flags].each do |res|
resources res, only:[...], defaults: {}
end
但我发现你们只有不同之处,所以你也可以将它传递给迭代器