Tabela w której elementy mają rozwijana listę

Hej mam taką tabelkę w widoku:

[code]

<% @tickets.each do |ticket| %>

<% if ticket.bus_id != nil %> <% end %> <% if current_user.admin? %> <% else %> <% if ticket.user_reserved_id == 0 %> <% else %> <% end %> <% end %> <% end %>
<%= sortable "cityFrom" %> <%= sortable "cityTo" %> <%= sortable "dateOfTrip" %> <%= sortable "endOfTrip" %> <%= sortable "bus_id" %> Seat in the bus
<%= ticket.cityFrom %> <%= ticket.cityTo %> <%= ticket.dateOfTrip.strftime("%A %d-%m-%Y %H:%M") %> <%= ticket.endOfTrip.strftime("%A %d-%m-%Y %H:%M") %><%= link_to Bus.find(ticket.bus_id).nameOfBus, bus_path(Bus.find(ticket.bus_id)) %> <%= ticket.nameOfSeat %><%= link_to 'Show', ticket %> <%= link_to 'Edit', edit_ticket_path(ticket) %> <%= button_to 'Destroy', ticket, :confirm => 'Are you sure?', :method => :delete %><%= button_to 'Reserve', reserve_ticket_path(ticket), :confirm => "Are you sure, u want to reserve this ticket?", :method => :put%><%= button_to 'Unreserve', unreserve_ticket_path(ticket), :confirm => "Are you sure, u want to unreserve this ticket?", :method => :put%>
[/code] Bilety na tą samą trasę i tą samą godzinę różnią się od siebie tylko atrybutem nameOfSeat. Kiedy tworzę ten widok to iteruję po wszystkich przekazanych biletach. W jaki sposób przeiterować tak aby bilety które są identyczne ale różnią się tylko przez nameOfSeat wyświetlić jako jeden a wartość nameOfSeat zrobić rozwijaną listą wyboru z dostępnymi siedzeniami?

Można chyba tak:

<% ticket_groups = @tickets.group_by { |t| [t.city_from, t.city_to, t.dateOfTrip, t.endOfTrip, t.bus_id] } %>
<% ticket_groups.each_key do |t| %>
  <tr>
    <td><%= t[0] %></td> # city_from
    ...
    <%= select_tag "seat", ticket_groups[t].collect { |s| [s.nameOfSeat, s.nameOfSeat] } %>
    ...
  <% end %>
<% end %>

Aczkolwiek zastanawiam się, czy nie powinno być to już na poziomie modelu ogarnięte, tzn. oddzielny model reprezentujący dany kurs i dopiero w nim bilety na poszczególne miejsca :slight_smile:

Dzięki, faktycznie chyba powinienem wprowadzić jeszcze klasę kurs aby to pogrupować w sposób bardziej logiczny.