Ruby on rails html erb中的Rails循环

Ruby on rails html erb中的Rails循环,ruby-on-rails,Ruby On Rails,如何简化以下行: <% if @campaign.previous_campaign.present? %> <%= @campaign.previous_campaign.product_name %> <% if @campaign.previous_campaign.previous_campaign.present? %> <%= @campaign.previous_campaign.previous_campa

如何简化以下行:

<% if @campaign.previous_campaign.present? %>
    <%= @campaign.previous_campaign.product_name %>
    <% if @campaign.previous_campaign.previous_campaign.present? %>
        <%= @campaign.previous_campaign.previous_campaign.product_name %>
    <% end %>
<% end %>

我需要不断添加“.previous_campaign”,直到它不存在。因此,上述代码中的下一个将是:

<%= @campaign.previous_campaign.previous_campaign.previous_campaign.product_name %>


等等。

你可以这样做:

<% for c in @campaign do %>
  <% if c.previous_campaign.present? %>
    <%= c.previous_campaign.product_name %>
  <% end %>
<% end %>
<% campaign = @campaign %>    
<% while campaign.previous_campaign.present? %>
  <% campaign = campaign.previous_campaign %>  
  <%= campaign.product_name %>
<% end %>

类似这样的内容:

<% for c in @campaign do %>
  <% if c.previous_campaign.present? %>
    <%= c.previous_campaign.product_name %>
  <% end %>
<% end %>
<% campaign = @campaign %>    
<% while campaign.previous_campaign.present? %>
  <% campaign = campaign.previous_campaign %>  
  <%= campaign.product_name %>
<% end %>


代码可能需要一些调试,但我想想法很清楚。

。previous_活动是已完成活动的标志,当活动完成并被替换时,旧活动和新活动将连接起来。所以我想做的是看看以前的活动是否存在,如果存在,获取一些信息,然后看看以前的活动是否也有以前的活动。。等等。基本上我需要继续添加。上一个活动,比如。上一个活动。上一个活动。上一个活动。直到没有上一个活动为止。@Ohendrie,不,没有。它是无限的loop@OhHendrie“未定义的方法'each'”,因为@campaign是nil?尝试使用已编辑的语法。啊,好的。我假设@campaign=campaign.all