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视图模板,因为它只会输出一个恰好只包含一次骑行的集合。

于 2009-12-02T11:26:26.520 回答