我有一个名为train的模型,里面有240个字符串。每个字符串简单地命名为S1到S240。我想知道是否有办法迭代单个记录中的每个字符串。我有一个显示字符串的视图。有些字符串会包含一些内容,有些字符串将为空,我只想显示那些在视图中不为空的字符串。所以我需要一个迭代器或其他东西来检查每一个并查看它是否为空,如果它不是空的则显示它。
我可以用这个来做:
<% if @train.s1 != nil then %>
<%= @train.s1 %><br>
<% end %>
显然,我不想为240个字符串做这件事。
答案 0 :(得分: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
?
答案 1 :(得分:0)
在这种情况下,你可以这样做
<% (1..240).each do |index| %>
<% if @train.try("s#{index}") != nil then %>
<%= @train.try("s#{index}") %><br>
<% end %>
<% end %>