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