Rails: парные значения из массива l oop - PullRequest
0 голосов
/ 06 мая 2020

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

@ open_hours = OpenHour.where (store_id: params [: store_id]). Order ('day AS C')

    <% @open_hours.each do |open| %>
      <% if open.day == 1 %>
        <p><strong>Monday:</strong>
          <%= I18n.l open.opens, :format => :custom %>-<%= I18n.l open.closes, :format => :custom %></p>
      <% end %>
      <% if open.day == 2 %>
        <p><strong>Tuesday:</strong>
          <%= I18n.l open.opens, :format => :custom %>-<%= I18n.l open.closes, :format => :custom %></p>
      <% end %>
      <% if open.day == 3 %>
        <p><strong>Wednesday:</strong>
          <%= I18n.l open.opens, :format => :custom %>-<%= I18n.l open.closes, :format => :custom %></p>
      <% end %>
      <% if open.day == 4 %>
        <p><strong>Thursday:</strong>
          <%= I18n.l open.opens, :format => :custom %>-<%= I18n.l open.closes, :format => :custom %></p>
      <% end %>
      <% if open.day == 5 %>
        <p><strong>Friday:</strong>
          <%= I18n.l open.opens, :format => :custom %>-<%= I18n.l open.closes, :format => :custom %></p>
      <% end %>
      <% if open.day == 6 %>
        <p><strong>Saturday:</strong>
          <%= I18n.l open.opens, :format => :custom %>-<%= I18n.l open.closes, :format => :custom %></p>
        <% end %>
      <% if open.day == 0 %>
        <p><strong>Sunday:</strong>
          <%= I18n.l open.opens, :format => :custom %> -<%= I18n.l open.closes, :format => :custom %></p>
        <% end %>
    <% end %>

1 Ответ

1 голос
/ 06 мая 2020

Полагаю, @open_hours отсортированы по дням. Проверьте, было ли предыдущее открытие для того же дня, и если да, пропустите название дня. Используйте таблицу для выравнивания.

<% last_day = nil %>
<% days = %w(Sunday Monday Tuesday Wednesday Thursday Friday Saturday) $>
<table>
  <% @open_hours.each do |open| %>
    <tr>
      <td>
        <%= days[open.day] if open.day != last_day %>
        <% last_day = open.day%>
      </td>
      <td>
        <%= I18n.l open.opens, :format => :custom %>-<%= I18n.l open.closes, :format => :custom %>
      </td>
    </tr>
  <% end %>
</table>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...