2013-12-05 3 views
0

Я пытаюсь выполнить серию запросов, которые будут организовывать результаты в определенный промежуток времени таким образом, чтобы каждое место находилось на верхнем уровне и содержало другой массив с каждым набором результатов. Вот то, что я до сих пор:Каков правильный способ формирования этого многомерного массива?

locations = Location.all 
@requests = [] 
locations.each do |location| 
    request = PurchaseRequest.where('created_at >= ? AND created_at <= ? AND location_id = ?', params[:start_date], params[:end_date], location.id).order(:location_id) 
    @requests.push(location => request) 
end 

Мой идеал (нерабочим) осуществление в представлении будет выглядеть примерно так:

<ul> 
<% @requests.each do |location| %> 
    <li>location[0].name</li> 
    <ul> 
     <% location[1].each do |request| %> 
      <li>request.name</li> 
     <% end %> 
    </ul> 
<% end %> 
</ul> 

ответ

1

Попробуйте что-то вроде этого:

@requests = {} 
Location.all.each do |location| 
    @requests[location.name] = PurchaseRequest.where('created_at >= ? AND created_at <= ? AND location_id = ?', params[:start_date], params[:end_date], location.id).order(:location_id) 
end 

и:

<ul> 
    <% @requests.each do |location_name, request_list| %> 
    <li><%= location_name %></li> 
    <ul> 
     <% request_list.each do |request| %> 
     <li><%= request.name %></li> 
     <% end %> 
    </ul> 
    <% end %> 
</ul> 

@requests становится хэшем с ключом, являющимся именем местоположения и значением, являющимся запросом на покупку.

Смежные вопросы