web-dev-qa-db-ja.com

HTMLの代わりにJSONをデフォルトとしてレンダリングしますか?

私はRails 3.2にデフォルトでJSONをレンダリングし、次のようにHTMLを完全にキックする必要があることを伝えようとします。

respond_to :json    

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

この構文では、.jsonをURLに追加する必要があります。どうすれば達成できますか?

38
Tronic

routes.rbファイルを変更して、デフォルトの形式を指定できます

routes.rb

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

これにより、clients_controller全体のデフォルトの応答形式が変更されます

75
rogeliog

インデックスアクションでRESTfulに応答する必要がない場合は、xml応答を直接レンダリングするだけです。

def index
  render json: Client.all
end
10
jdoe

このパターンは、両方に同じコントローラーアクションを使用する場合に適しています。 :htmlをデフォルトの形式として使用して、通常どおりにWebバージョンを作成します。次に、APIをパスの下に配置し、そこでデフォルトとして:jsonを設定します。

Rails.application.routes.draw do

  resources :products

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

end
7
Mark Swardstrom