如何遍历单个记录中的所有字符串
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 Strings
和 String 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 %>
我有一个名为 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 Strings
和 String 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 %>