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

时间:2018-10-25 08:04:08

标签: ruby-on-rails iteration erb

我有一个表,其中的字段名为day1,day2,依此类推,直到day23。

我将数据保存在名为Forecast的变量中,并尝试如下所示在模板文件中打印值:

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

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

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

2 个答案:

答案 0 :(得分:1)

以下将起作用:

<% (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 :(得分:-1)

尝试一下

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

如果您在任何变量中都有日期编号,请对其进行迭代,而不是(1..23)