我有一个表,其中的字段名为day1,day2,依此类推,直到day23。
我将数据保存在名为Forecast的变量中,并尝试如下所示在模板文件中打印值:
<td><% forecast.day1 %></td>
我可以在1到23天之间循环执行上述操作吗?请帮忙!
此外,我想检查一天的值是否为空,并仅在不为空时显示它。我可以为此使用.present吗?请帮忙!
答案 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)