【问题标题】:how to iterate over all strings in a single record如何遍历单个记录中的所有字符串
【发布时间】:2016-08-26 16:07:28
【问题描述】:
我有一个名为 train 的模型,其中包含 240 个字符串。每个字符串都被简单地命名为 S1 到 S240。我想知道是否有一种方法可以遍历单个记录中的每个字符串。我有一个显示字符串的视图。有些字符串中会有一些东西,有些是空的,我只想显示那些在视图中不为空的字符串。所以我需要一个迭代器或其他东西来检查每个,看看它是否为空,如果它不为空则显示它。
我可以这样做:
<% if @train.s1 != nil then %>
<%= @train.s1 %><br>
<% end %>
显然我不想为 240 个字符串这样做。
【问题讨论】:
标签:
ruby-on-rails-4
iterator
modelattribute
【解决方案1】:
您可能可以执行类似迭代模型属性的操作。
<% @train.attributes.each do |attr_name, attr_value| %>
<% !if attr_value.blank? %>
<%= attr_value %>
<% end %>
<% end %>
如果你有更多的属性,而不仅仅是那些字符串,这对你来说真的不起作用。你为什么不与协会合作? Train has_many Strings 和 String belongs_to Train。所以你可以遍历@train.strings.each?
【解决方案2】:
在这种情况下你可以这样做
<% (1..240).each do |index| %>
<% if @train.try("s#{index}") != nil then %>
<%= @train.try("s#{index}") %><br>
<% end %>
<% end %>