如何遍历单个记录中的所有字符串

how to iterate over all strings in a single record

我有一个名为 train 的模型,其中有 240 个字符串。每个字符串简单地命名为 S1 到 S240。我想知道是否有一种方法可以遍历单个记录中的每个字符串。我有一个显示字符串的视图。有些字符串中会有一些东西,有些是空的,我只想显示视图中不为空的那些。所以我需要一个迭代器或其他东西来检查每一个,看看它是否为空,如果不为空则显示它。

我可以用这个来做:

<% if @train.s1 != nil then %>
  <%= @train.s1 %><br>
<% end %>

显然我不想对 240 个字符串执行此操作。

您可能可以执行一些操作,例如遍历模型的属性。

<% @train.attributes.each do |attr_name, attr_value| %>
  <% !if attr_value.blank? %>
    <%= attr_value %>
  <% end %>
<% end %>

如果您拥有的属性不只是这些字符串,那么这对您来说就不起作用了。你为什么不与协会合作? Train has_many StringsString belongs_to Train。所以你可以遍历 @train.strings.each?

那么在那种情况下你可以这样做

<% (1..240).each do |index| %>
  <% if @train.try("s#{index}") != nil then %>
    <%= @train.try("s#{index}") %><br>
  <% end %>
<% end %>