Подтвердить что ты не робот

Render JSON вместо HTML по умолчанию?

Я пытаюсь сказать rails 3.2, что он должен отображать JSON по умолчанию и полностью удалять HTML следующим образом:

respond_to :json    

def index
  @clients = Client.all
  respond_with @clients
end

С этим синтаксисом я должен добавить .json в URL. Как я могу это достичь?

4b9b3361

Ответ 1

Вы можете изменить свои файлы routes.rb, чтобы указать формат по умолчанию

routes.rb

resources :clients, defaults: {format: :json}

Это изменит формат ответа по умолчанию для всего clients_controller

Ответ 2

Если вам не нужен RESTful, отвечающий в вашем действии индекса, просто отрисуйте свой xml-ответ напрямую:

def index
  render json: Client.all
end

Ответ 3

Этот шаблон работает хорошо, если вы хотите использовать те же действия контроллера для обоих. Создайте веб-версию, как обычно, используя: html в качестве формата по умолчанию. Затем подтяните api под дорожкой и установите: json по умолчанию там.

Rails.application.routes.draw do

  resources :products

  scope "/api", defaults: {format: :json} do
    resources :products
  end

end