2011-01-01 10 views
0

私はプロジェクト内に次のコードは何をしますか?

demo
を作成しました。私はその後、私はproducts_controller.rbコード

class ProductsController < ApplicationController 
    # GET /products 
    # GET /products.xml 
    def index 
    @products = Product.find(:all) 

respond_to do |format| 
    format.html # index.html.erb 
    format.xml { render :xml => @products } 
end 
    end 
end 

の以下の部分が含まれていますが、私は実際にコードのこれら4本のラインを理解することはできません

http://localhost:3000/products/

を与えた

 rail_apps/demo> script server products title :stiring,description :text,url: string

を与えることによって、足場のアプリケーションを作成しました。誰も私にリードを与えることができますか?

答えて

5
@products = Product.find(:all) 

データベースからすべての製品を取得します。

respond_to do |format| 
    format.html # index.html.erb 
    format.xml { render :xml => @products } 
end 

はRoRの共通パターンです。要求に基づいて、コントローラは異なるビューをレンダリングします。たとえば、/productsを要求すると、製品はindex.html.erbビューに渡されます。これはhtmlテンプレートです。要求が/products.xmlの場合、製品をXMLファイルにシリアル化し、このファイルを応答として送信します。最初にすべての製品を検索し、変数@productsに割り当て、そのURLは、クライアントがXMLを望んでいる.xmlに終了した場合、クライアントは、例えば(望んでいるものに応じて、HTMLやXMLのいずれかで応答indexアクションをレンダリングするために

+0

ダーリンに感謝して、私もrespond_toループかどうか教えていただけますか?それはループのようです。その場合、クライアントはとにかく一度要求します。ここでdoループの本当の目的は何ですか? – CHID

+0

@CHID、それはループではなく、ブロックです。より詳しい説明は、[次のブログ記事](http://www.tokumine.com/2009/09/13/how-does-respond_to-work-in-the-rails-controllers/)をご覧ください。 –

+0

ダーリン – CHID

0

クライアントは、クライアントがXMLを望んでいる場合はHTML(RailsはそうProductsControllerindexはRailsがapp/views/products/index.html.erbを探しになり、コントローラ名とアクション名に基づいてテンプレート自体を検索します。

@products変数からXMLをレンダリングたい場合index.html.erbをレンダリング(Rails ActiveRecordオブジェクトまたはオブジェクトの配列をプロパティとしてXMLで自動的にシリアライズできます)。

+0

response_to do | format | 。 。 end はループ構造のようです...本当にループですか? – CHID

+0

いいえ、それはパターン一致句のようです。ケースを考える/いつ(Java/JS/C++のスイッチ/ケース)。 – Theo

関連する問題