33

を使用して新しい Rails 4 (rc1) プロジェクトをrails new生成し、rails g scaffold.

予想どおり、移行、コントローラー、および必要なすべてのビュー ファイルが作成されました。

また、show.json.jbuilder と index.json.jbuilder も作成されています。

これは、モデルからのjson生成を支援するためだと思います。コントローラーには、format.json の呼び出しも含まれています。

質問: なぜ json が必要なのですか? また、生成されたアプリケーションのどの部分で json を使用していますか? (私にとって)ビューがjsonを使用して何かをレンダリングしているようには見えず、サーバー側でレンダリングされているようです(コンテンツを取得するためにビューで@model変数が使用されています)。

エッジ ガイド ( http://edgeguides.rubyonrails.org/ ) は、jbuilder と、それが必要な理由について言及していません。

前もって感謝します!質問を明確にすることができるかどうか教えてください。

4

4 に答える 4

34

「なぜ」の部分に答えるには:

Rails でのスキャフォールディングの関連性は、年月を経ていくぶん変化しています。簡単に抽象化できない必要なコードを生成することはもはや意図されていません。今日では、多少動的な例を提供し、ベスト プラクティスを示すための教育ツールがほとんどです。(それが、議論の余地のある有用性を伴うコメントが散りばめられている理由でもあります)

つまり、生成されたファイルは次のことを伝えるためのものです。

Rails を使用する場合は、次の方法をお勧めします。

またはあなたの特定のケースでは:

JBuilder を使用する場合は、JSON を生成する良い方法があります。

彼らは、「こうしなければならない」と言うつもりはありませんまたは「必要なので、生成されたものをすべて保持する必要があります。」

于 2013-11-12T14:03:24.417 に答える
19

前に述べたように、Rails 4 は、JSON クエリに応答するためのテンプレートを持つ方法としてファイルを生成するようです。モデルを「足場にした」としましょう。Carに行くと、HTML ページと車の詳細ビュー (id 1) で応答します/car/1

次に に移動する/car/1.jsonと、ファイルがレンダリングされshow.json.jbuilderます。showスキャフォールディング時にメソッドが空であるため、ある種の自動メカニズムもあるようです。

def show
end
于 2013-08-14T09:16:25.357 に答える
14

Rails 4 scaffold ジェネレーターは、gem 'Jbuilder' が Gemfile にあるため、jbuilder ファイルを作成します。これを削除すると、Gemfileこの機能は停止します。

于 2013-06-22T20:41:42.433 に答える
10

RoR 4 にデフォルトで含まれる Jbuilder gem そのページでそれについて読むことができます。それについてのキャストがあります: Railscasts #320

于 2013-05-29T06:52:50.827 に答える