2009-12-02 53 views
1

有人可以提供一個使用Builder從SQL數據庫創建多個XML文件的示例。我可以很容易地創建一個包含整個數據庫在這裏一個...基於數據庫生成多個XML文件

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

這將創建一個名爲INDEX.XML基於文件的文件我創建了名爲index.xml.builder包含以下代碼

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' 

也能正常工作的唯一線路,但我會如何創建一個包含遊戲機的最後一個元素的新文件?

感謝

編輯:從format.rss改爲format.xml

回答

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文件,添加一個新的collection routelist行動:

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

或者你可以簡單地使控制器的index方法中的find調用條件,使其獲取所有遊樂設施或過去的騎作爲appropria TE。在這種情況下,您應該能夠重新使用現有的index.xml.builder視圖模板,因爲它只會輸出恰好只包含一次乘車的集合。

+0

是的,這正是我想要做的。它應該工作,但它永遠找不到它的路線。因此,這可以通過網頁訪問,例如http:// something:3000/latest或http:// something:3000/rides/latest? – 2009-12-02 16:41:31

+0

這取決於你的'config/routes.rb'文件的樣子。你可以編輯你的問題,以包括它的內容。 – 2009-12-02 17:08:50

+0

我猜我需要添加另一行到routes.rb以便它識別控制器中的最新方法? – 2009-12-02 17:21:33