次のような足場を生成します。
rails generate scaffold ユーザー名:文字列 電子メール:文字列
コントローラー クラスで次のようなコードを作成します。
respond_to do |format|
format.html # show.html.erb
format.json { render json: @user }
end
最初はこれが何を意味するのかわからなかったので、探しに行ってこれを見つけました。これは、ほとんどのことを適切に説明していると思います。しかし、形式は最終的にResponder クラスになるはずです。さて、Responder クラスで宣言されている xml、html、または json メンバーはないようです。彼らはどこから来たのか?
PS:
scaffold の開発者が、最終的にレスポンダーになったときにブロック パラメーターに「format」という名前を付けて (そして、フォーマット情報は .html、.xml、.json などから取得されます)、コードを少し似たものにするのは残酷に思えます。英語ですが、実際に何が起こっているのか理解できません。実際、Responder::respond は次のように定義されていますが、これはあまりにも偶然のようです。
def respond
method = "to_#{format}"
respond_to?(method) ? send(method) : to_format
end
しかし、ここ ("to_#{format}" 内) の形式が、format という名前のブロック パラメーターにどのように関連付けられるのかわかりません。明確にするために、@ 記号がないため、これはインスタンス変数ではありませんよね?