コントローラーでこのコードが必要な理由を説明してください。このコード ブロックの意味は何ですか?
respond_to do |format|
format.html # index.html.erb
format.json { render json: @users }
end
コントローラーでこのコードが必要な理由を説明してください。このコード ブロックの意味は何ですか?
respond_to do |format|
format.html # index.html.erb
format.json { render json: @users }
end
ユーザー/呼び出し元が要求する形式に応じて、出力を異なる形式にすることができます。にアクセスするhttp://yourhost/controller/index.html
と、コントローラーは ERB テンプレートindex.html.erb
(または HAML など) で応答します。にアクセスhttp://yourhost/controller/index.json
すると、JSON テンプレートで応答しますindex.json.erb
。
これにより、データを準備し、要求された形式に基づいてレンダリングするビューを選択できる単一のコントローラー アクションを持つことができます。
Respond_with の呼び出し時にデフォルトでレンダリングされる MIME タイプを定義します。したがって、基本的に、これは、コントローラー アクションがさまざまな形式 (あなたの場合は html、json) でヒットし、それを呼び出しているものにデータを返すことができることを意味します。これは、API 開発やその他多くのことに役立ちます。例: すべてのユーザーの json リストを取得して、javascript で何かを実行したいとします。/users.json を呼び出すと、これが user_controller#index アクションに送られ、すべてのユーザーの json オブジェクトをレンダリングすることがわかります。
上記のコードはスキャフォールドで生成され、コントローラーのレンダリング*.html
と*.json
ビューの方法を提供し、Web アプリケーションの API または通常のビューを実装するためのデータに簡単にアクセスできるようにします。
XML 出力を作成することもできます。
format.xml { render xml: @users }
使用しているgemに応じて、PDFやDOCなどの他の形式。
詳細については、Rails ガイドのアクション コントローラーの概要を参照してください。