Rails 模板文件 - 遍历 table 中的列

Rails Template File - looping through columns in a table

我有一个 table 字段名为 day1、day2 等等,直到 day23。

我在一个名为 forecast 的变量中有数据,我正尝试打印模板文件中的值,如下所示:

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

我可以在第 1 天到第 23 天循环执行上述操作吗?请帮忙!

另外,我想检查一天的值是否为空,只有当它不为空时才显示它。我可以为此使用 .present 吗?请帮忙!

以下将起作用:

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

因此,您遍历 1 到 23 的范围,使用 public_send.

将方法 day#{n} 发送到每个数字的 forecast

关于你问题的第二部分,如果元素存在则只显示 td,你可以使用:

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

这会在检查期间将结果分配给局部变量,并用于显示结果(如果存在)- 无需调用该方法两次。

希望对您有所帮助 - 如果您有任何问题,请告诉我。

试试这个

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

如果您在任何变量中有天数,则遍历它而不是 (1..23)