2014-01-09 5 views
5

Существует следующий код для маршрутизации:Как установить формат по умолчанию для маршрутизации в Rails?

resources :orders, only: [:create], defaults: { format: 'json' } 
    resources :users, only: [:create, :update], defaults: { format: 'json' } 
    resources :delivery_types, only: [:index], defaults: { format: 'json' } 
    resources :time_corrections, only: [:index], defaults: { format: 'json' } 

Можно установить формат по умолчанию для всех ресурсов, используя 1 строку без хэша «значения по умолчанию» в каждой строке? Благодарю.

+0

Не маршрутизации различных типов запросов, полученных из запроса заголовка (HTTP: // stackoverflow.com/questions/1595424/request-format-returning/1595453#1595453), а не в параметре? –

ответ

6

попробовать что-то вроде этого:

scope format: true, defaults: { format: 'json' } do 
    resources :orders, only: [:create] 
    resources :users, only: [:create, :update] 
    resources :delivery_types, only: [:index] 
    resources :time_corrections, only: [:index] 
end 
2

Я предпочел бы добавить метод application_controller. И используйте его, как прежде, фильтр, где я хочу.

class ApplicationController < ActionController::Base 
... 
private 
... 
    def set_default_format 
    params[:format] ||= "json" 
    end 
end 

class UsersController < ApplicationController 
    before_filter :set_default_format, only: [:create] 
    ... 
end 

В этом формате случае по умолчанию будет не сюрприз для новых разработчиков, потому что обычно routes.rb является большим и громоздким

Смежные вопросы