Как динамически использовать rowspan в форме рельсов

0

Я должен отображать маршрут транспортного средства, тариф и останавливать детали в формате таблицы.

структура таблицы

 Route       Stops        Fare       Morning Arrival Time       Evening Arrival Time

    A            A1         100            09:00 AM                  04:00 PM
                 A2         200            10:100 AM                 05:00 PM

    B            B1         100            09:30 AM                   04:10 PM
                 B2         200            10:40 AM                   05:10 PM
                 B3         300            11:00 AM                   05:30 PM

Я пробовал следующий код, но я не получил табличный формат, о котором я говорил выше.

<table border="1">
  <tr>
    <th>Route Name</th>
    <th>Stop Name</th>
    <th>Fare</th>
    <th>Morning arrival</th>
    <th>Evening arrival</th>
  </tr>
   <% @stops.each do |stop| %>
    <% @no_of_stop = stop.route.no_of_stop %>
  <tr>

    <td rowspan = '<%= @no_of_stop %>' ><%= stop.route.route_name %></td>   
    <td ><%= stop.stop_name %></td>
    <td><%= stop.fare %></td>
    <td><%= stop.morning_arrival %></td>
    <td><%= stop.evening_arrival %></td>

  </tr>
   <% end %>

</table>

Я получил этот стол. Изображение 174551

Пожалуйста помогите..

  • 0
    Добавлен html тег, так как здесь он кажется более актуальным, чем RoR.
  • 0
    Не могли бы вы уточнить содержание переменной экземпляра @stops ? Является ли целью избежать повторного вывода имени остановки, а скорее визуальной группировки строк?
Показать ещё 2 комментария
Теги:

1 ответ

0
Лучший ответ

Судя по именам атрибутов, это похоже на то, что ваши модели немного отложены назад или ссылаются в этом представлении.

Предполагая, что у вас есть несколько routes и каждый из этих маршрутов ссылается на ряд stops например, посредством отношения has_many было бы более целесообразно отображать маршруты, а не остановки ИМО:

<table border="1">
  <tr>
    <th>Route Name</th>
    <th>Stop Name</th>
    <th>Fare</th>
    <th>Morning arrival</th>
    <th>Evening arrival</th>
  </tr>

  <% @routes.each do |route| %>
    <tr>
      <td rowspan="<% route.stops.count %>"><%= route.route_name %></td>
      <% route.stops.each do |stop| %>
        <td ><%= stop.stop_name %></td>
        <td><%= stop.fare %></td>
        <td><%= stop.morning_arrival %></td>
        <td><%= stop.evening_arrival %></td>
      <% end %>
    </tr>
  <% end %>

</table>

Конечно, это будет работать только в том случае, если a route has many stops.

О, и если route.no_of_stop - это, например, столбец кеша счетчика, вы можете, конечно, снова заменить route.stops.count.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню