【问题标题】: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 StringsString 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 %>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-19
        • 1970-01-01
        • 1970-01-01
        • 2016-02-20
        • 1970-01-01
        • 2013-02-04
        • 2023-03-31
        • 1970-01-01
        相关资源
        最近更新 更多