0

コントローラーでこのコードが必要な理由を説明してください。このコード ブロックの意味は何ですか?

respond_to do |format|
  format.html # index.html.erb
  format.json { render json: @users }
end
4

3 に答える 3

2

ユーザー/呼び出し元が要求する形式に応じて、出力を異なる形式にすることができます。にアクセスするhttp://yourhost/controller/index.htmlと、コントローラーは ERB テンプレートindex.html.erb(または HAML など) で応答します。にアクセスhttp://yourhost/controller/index.jsonすると、JSON テンプレートで応答しますindex.json.erb

これにより、データを準備し、要求された形式に基づいてレンダリングするビューを選択できる単一のコントローラー アクションを持つことができます。

于 2012-12-05T15:17:34.693 に答える
2

Respond_with の呼び出し時にデフォルトでレンダリングされる MIME タイプを定義します。したがって、基本的に、これは、コントローラー アクションがさまざまな形式 (あなたの場合は html、json) でヒットし、それを呼び出しているものにデータを返すことができることを意味します。これは、API 開発やその他多くのことに役立ちます。例: すべてのユーザーの json リストを取得して、javascript で何かを実行したいとします。/users.json を呼び出すと、これが user_controller#index アクションに送られ、すべてのユーザーの json オブジェクトをレンダリングすることがわかります。

于 2012-12-05T15:18:57.787 に答える
1

上記のコードはスキャフォールドで生成され、コントローラーのレンダリング*.html*.jsonビューの方法を提供し、Web アプリケーションの API または通常のビューを実装するためのデータに簡単にアクセスできるようにします。

XML 出力を作成することもできます。

format.xml  { render xml: @users }

使用しているgemに応じて、PDFやDOCなどの他の形式。

詳細については、Rails ガイドのアクション コントローラーの概要を参照してください。

于 2012-12-05T15:24:01.807 に答える