Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Ruby:对一个数组进行排序,该数组为;“链接”;到另一个数组_Ruby On Rails_Ruby_Sorting - Fatal编程技术网

Ruby on rails Ruby:对一个数组进行排序,该数组为;“链接”;到另一个数组

Ruby on rails Ruby:对一个数组进行排序,该数组为;“链接”;到另一个数组,ruby-on-rails,ruby,sorting,Ruby On Rails,Ruby,Sorting,在我的rails应用程序中,我的控制器中有一个循环,可以执行以下操作: event_prices = [] event_dates = [] for event in @customer.events event_prices.push(event.total_prices) event_dates.push(event.event_time.strftime("%b %d, %Y at %I%p")) end 然后,我使用数组将数据推送到highcharts图形中。我想做的是按顺序对

在我的rails应用程序中,我的控制器中有一个循环,可以执行以下操作:

event_prices = []
event_dates = []
for event in @customer.events
  event_prices.push(event.total_prices)
  event_dates.push(event.event_time.strftime("%b %d, %Y at %I%p"))
end
然后,我使用数组将数据推送到highcharts图形中。我想做的是按顺序对
事件\u日期
数组排序,但如果这样做,我将丢失
事件\u价格
的顺序。现在,
事件价格[1]
对应于
事件日期[1]
等等,但是如果我调用
排序
事件日期
上,它不会将
事件价格
与之一起排序


那么,如何获得它,以便以相同的方式对两个数组进行排序呢

event_prices = []
event_dates = []
@customer.events.sort_by { |e| e.event_time }.each do |event|
  event_prices << event.total_prices
  event_dates << event.event_time.strftime("%b %d, %Y at %I%p")
end
event_prices=[]
事件日期=[]
@customer.events.sort_by{e | e.event_time}。每个do|事件|

活动价格像这样的东西怎么样:

event_prices = []
event_dates = []
@customer.events.sort_by { |e| e.event_time }.each do |event|
  event_prices << event.total_prices
  event_dates << event.event_time.strftime("%b %d, %Y at %I%p")
end
event_prices=[]
事件日期=[]
@customer.events.sort_by{e | e.event_time}。每个do|事件|

事件价格最好使用数据库进行排序。我会这样做:

event_prices, event_dates = 
  @customer.events(:order => "event_time ASC").map do |e|
    [e.total_prices, e.event_time.strftime("%b %d, %Y at %I%p")]
  end.transpose

最好使用DB进行排序。我会这样做:

event_prices, event_dates = 
  @customer.events(:order => "event_time ASC").map do |e|
    [e.total_prices, e.event_time.strftime("%b %d, %Y at %I%p")]
  end.transpose

哇,你是一个ruby向导:)ThanksBtw默认情况下,这会将它们从最旧排序到最新。要获得相反的结果,您可以将列表反转,或者保存当前日期
now=Time.now
,然后将块设置为
sort\u by
,如下所示:
now-e.event\u Time
。再次感谢。事实上,我想要最老的到最新的,所以这很好:)没问题。如果你有问题,请告诉我。。。以防万一我把它弄脏了。还请记住,您可以通过关联(如
@customer.events(…)
或使用命名范围,如定义
@customer.ordered_events
)来实现这一点,但这对于您的用例来说可能不是什么大问题。看看活动记录关联文档。对于命名范围,请尝试从这里开始:哇,你是一个ruby向导:)ThanksBtw默认情况下,这会将它们从最旧排序到最新。要获得相反的结果,您可以将列表反转,或者保存当前日期
now=Time.now
,然后将块设置为
sort\u by
,如下所示:
now-e.event\u Time
。再次感谢。事实上,我想要最老的到最新的,所以这很好:)没问题。如果你有问题,请告诉我。。。以防万一我把它弄脏了。还请记住,您可以通过关联(如
@customer.events(…)
或使用命名范围,如定义
@customer.ordered_events
)来实现这一点,但这对于您的用例来说可能不是什么大问题。请查看活动记录关联文档。对于命名范围,请尝试从此处开始: