2014-07-23 205 views
-1

我有一個列表Flights出發和到達機場。每個flight都有出發/到達時間。我想顯示航班列表與左邊的出發地和目的地在右邊,幾個小時的分組時間表,就像這樣:陣列的紅寶石散列碼

 Departures | Arrivals 

Hours 08 - 09 

Flight 1, 08:15 | Flight ABC, 08:12 
Flight 2, 08:21 | Flight XY, 08:36 
Flight 05, 08:49 | Flight ABC, 08:38 

Hours 09 - 10 

Flight 1, 09:25 | Flight ABC, 09:55 
Flight 2, 09:56 | 

.... 

我創造這樣的哈希:

@flights= {} 

Flight.each do |t| 
    @flights[t_time] ||= [] 
    t_time = t.departure_date.change(min: 0) 
    if t.departure 
    @flights[t_time][0] << t #departures 
    else 
    @flights[t_time][1] << t #arrivals 
    end 
end 

這似乎是工作。但我不知道如何在視圖中解析這個結構來訪問每一次,然後在這兩個數組中的每個對象。任何幫助,將不勝感激。

+0

是否有因爲您沒有將到達和離開時間存儲在航班的相同記錄中? –

+0

這不是同一班航班。他們是不同的航班,到達和離開。我只是想根據出發/到達時間並排顯示它們。 –

+0

我不會說謊。這將是非常混亂的看看。 –

回答

0

終於明白了。首先,我改變了哈希和初始化它:

@global_flights[t_time] ||= {} 
@global_flights[t_time][:departures] ||= [] # departures 
@global_flights[t_time][:arrivals] ||= [] # arrivals 

....

Flight.each do |t| 
    t_time = t.departure_date.change(min: 0) 
    if t.departure 
     @global_flights[t_time][:departures] << t 
    else 
     @global_flights[t_time][:arrivals] << t 
    end 
end 

這讓我中顯示的數據視圖需要:

<% @global_flights.each do |times, flights| %> 
    <%= times %> 
    <% flights[:departures].each do |t| %> 
     <%= render partial: "flight", locals: {t: t} %> 
    <% end %> 
    <% flights[:arrivals].each do |t| %> 
     <%= render partial: "flight", locals: {t: t} %> 
    <% end %> 
<% end %>