这是一个非常令人困惑的情况,我想知道是不是因为我在“新”控制器中。
我是一个新的电子邮件记录,其中包含以下视图:
<% title "New Email" %>
<div id = "form">
<%= render :partial => 'form' %>
</div>
<div id = "tabs">
<h2>Campaign Activity</h2>
<%= debug @campaign %>
</div>
电子邮件创建嵌套在广告系列ID中。
从控制台,campaign.emails只显示一封电子邮件,这是正确的。
但是,上面的调试@campaign行显示2个电子邮件记录,第二个如下所示:
- &id001 !ruby/object:Email
attributes:
created_at:
title:
campaign_id: 1
updated_at:
days:
subject:
message:
attributes_cache: {}
changed_attributes:
campaign_id:
errors: !ruby/object:ActiveRecord::Errors
base: *id001
errors: !map:ActiveSupport::OrderedHash {}
我在新视图中,它有一个标准的新控制器:
def new
@campaign = Campaign.find(params[:campaign_id])
@email = @campaign.emails.build
end
问题:从视图中,如何正确获取广告系列的关联电子邮件以及为什么我会看到“幻影”记录?
答案 0 :(得分:0)
只是为了确保我理解正确:您的@campaign
有一个电子邮件记录,在您的新操作中执行@campaign.emails.build
,这会添加一个新的(空)电子邮件,您希望能够迭代除新创建的电子邮件之外的所有电子邮件?
要迭代所有电子邮件而不显示“新”电子邮件,请执行类似
的操作<div id = "tabs">
<h2>Campaign Activity</h2>
<% @campaign.emails.reject {|x| x.new_record?}.sort{|x,y| x <=> y}.each do |email| %>
... show the data of the email here ...
<% end %>
</div>