Шаблонный файл Rails - перебирает столбцы в таблице - PullRequest
0 голосов
/ 25 октября 2018

У меня есть таблица с полями с именами день1, день2 и т. Д. До дня 23.

У меня есть данные в переменной с именем прогноз и я пытаюсь распечатать значения в файле шаблона, как показано ниже:

<td><% forecast.day1 %></td>

Могу ли я сделать вышеупомянутое в цикле для дней от 1 до 23?Пожалуйста, помогите!

Кроме того, я хотел бы проверить, является ли значение дня нулевым, и отображать его, только если оно не равно нулю.Могу ли я использовать .present для этого?Пожалуйста, помогите!

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Попробуйте это

<%= (1..23).each do |day_num| %>
  <% if forecast.send("day#{day_num}").present? %>
    <td><% forecast.send("day#{day_num}") %></td>
  <% end %>
<% end %>

Если у вас есть номер дня в любой переменной, то итерируйте его вместо (1..23)

0 голосов
/ 25 октября 2018

Будет работать следующее:

<% (1..23).each do |n| %>
  <td><%= forecast.public_send("day#{n}") %></td>
<% end %>

Итак, вы перебираете диапазон от 1 до 23, отправляя метод day#{n} в forecast для каждого номера, используя public_send.

Что касается второй части вашего вопроса, чтобы отобразить только td, если элемент присутствует, вы можете использовать:

<% (1..23).each do |n| %>
  <% if (forecast_for_day = forecast.public_send("day#{n}")).present? %>
    <td><%= forecast_for_day %></td>
  <% end %>
<% end %>

Это присваивает результатлокальная переменная во время проверки и используется для отображения результата, если он присутствует - избавляет от необходимости вызывать метод дважды.

Надеюсь, это поможет - дайте мне знать, если у вас есть какие-либо вопросы.

...