1

Builderを使用してSQLデータベースから複数のXMLファイルを作成する例を誰かが提供できますか?ここのようにデータベース全体を含むものを簡単に作成できます...

def index
  respond_to do |format|
   format.xml { @rides = Rides.find(:all) }
  end
end

これにより、次のコードを含むindex.xml.builderという名前のファイルに基づいてindex.xmlというファイルが作成されます。

xml.instruct!
xml.rides do
@rides.each do |ride|
  xml.item("togive" => ride.togive, "totake" => ride.totake, "howlong" => ride.howlong,       "isoffer" => ride.isoffer, "id" => ride.id, "contact" => ride.contact)
 end
end

これが私のroutes.rbの唯一の行です

map.resources :rides
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'

これは正常に機能しますが、Ridesの最後の要素を含む新しいファイルを作成するにはどうすればよいですか?

ありがとう

編集:format.rssからformat.xmlに変更

4

1 に答える 1

1

何を達成しようとしているのか完全にはわかりませんが、最後のライドを返す別のメソッドをコントローラーに含めることができます。

def last
  respond_to do |format| 
    format.xml { @last_ride = Rides.last } 
  end 
end 

そして、ビューテンプレートlast.xml.builderには、次のようなものがあります。

xml.instruct! 
xml.rides do 
  xml.item("togive" => @last_ride.togive, "totake" => @last_ride.totake etc...) 
end

このアプローチを採用した場合は、ファイルを変更して、アクションの新しい収集ルートconfig/routes.rbを追加する必要があります。list

map.resources :rides, :collection => { :last => :get }

findまたは、コントローラーのメソッド内で条件付きの呼び出しを行うだけで、必要にindex応じてすべてのライドまたは最後のライドをフェッチできます。この場合、既存のビューテンプレートを再利用できるはずですindex.xml.builder。これは、たまたま1回のライドしか含まれていないコレクションを出力するだけだからです。

于 2009-12-02T11:26:26.520 に答える