2009-12-02 57 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