2009-12-17 71 views
0

因此,我在我的RoR应用程序中生成XML数据以供外部消耗。在我的控制器的方法如下...订购从RoR随机生成的XML数据

def allOffers 
@ridesall = Ride.find(:all) 
respond_to do |format| 
    format.xml  
end 
end 

我有一个allOffers.xml.builder文件看起来像这样...

xml.instruct! 
xml.rides do 
@ridesall.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 

这个工程除了一件事伟大的.. .it会根据ID命令xml。我怎样才能让XML随机订购?

我可以简单地改变

@ridesall = Ride.find(:all) 

@ridesall = Ride.find(:all, :order => :random) 

谢谢

回答

1

您使用了哪个数据库?您可能需要依赖RDBMS特定的随机函数。例如在MySQL

:order => 'rand()' 

或PostgreSQL的

:order => 'random()' 
1

您可以随机播放该数组本身。这将适用于任何类型的数据库。

@ridesall.shuffle.each do 
    #... 
end 

注:Array#shuffle是新的1.8.7,所以require 'backports'如果使用Ruby 1.8.6。

0

@ridesall.sort_by { |x| rand() }也可以工作