3

足場を使用して、投稿用のCRUDシステムを作成しました。コントローラーでは、次のように表示されます。

class PostsController < ApplicationController
  # GET /posts
  # GET /posts.json
  def index
    @posts = Post.all

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @posts }
    end
  end
  • それは何でrespond_to、どこから来たのですか?演算子を使用しているので、doある種の反復可能なリストだと思います。formatそのリストのそれぞれで、メソッドhtmljsonメソッドを実行します。

  • メソッド{ render json: @posts }に関連してどのように機能しますか?メソッドへの引数として渡されていますかjson?とそれぞれがオブジェクトですかrender json: @posts?記号の外で使用されるコロン表記を見たことがありません。renderjson

4

2 に答える 2

3
  1. PostsControllerはApplicationControllerからメソッドを継承し、ApplicationControllerはActionController::Baseから継承します。そこresponds_toから来ています。検討する価値のある主題は「メソッドルックアップ」です。
  2. do ... endブロックを書く1つの方法です。 { render json: @posts }別の方法です。
  3. json: "foo"書くことのより現代的な代替手段です:json => "foo"
  4. formatブロック内で使用するために作成している任意の変数です。renderはメソッドで:jsonあり、シンボルです。respond_toRailsがそれに応じて応答をフォーマットするというユーザー要求に応答します。
  5. そして、方法を理解するために、これもあります:

http://apidock.com/rails/ActionController/MimeResponds/InstanceMethods/respond_to

そして、たとえばPaulが言及した方法で、ソース(少し厚い)を見たい場合はrespond_with、ここのRailsソースにあります。

rails / actionpack / lib / action_controller / metal / mime_responds.rb

于 2013-01-21T07:24:28.873 に答える
1

まず第一にrespond_to、Railsの最新のものではありません。しかし、とにかく説明への参照を提供します。

より現代的なヘルパーはrespond_withです。

おそらく、このスクリーンキャストはあなたに役立つでしょう。

于 2013-01-21T07:05:39.573 に答える