如何迭代单个记录中的所有字符串

时间:2016-08-26 16:07:29

标签: ruby-on-rails-4 iterator modelattribute

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

我可以用这个来做:

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

显然,我不想为240个字符串做这件事。

2 个答案:

答案 0 :(得分:1)

你可能会做一些事情,比如迭代模型的属性。

<% @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 :(得分:0)

在这种情况下,你可以这样做

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