почему отладка показывает две записи, когда консоль показывает (правильно) только одну в Rails? - PullRequest
0 голосов
/ 29 ноября 2010

Это очень запутанная ситуация, мне интересно, так ли это, потому что я нахожусь в «новом» контроллере.

Я новая запись электронной почты со следующим представлением:

<% title "New Email" %>

<div id = "form">
  <%= render :partial => 'form' %>
</div>

<div id = "tabs">
  <h2>Campaign Activity</h2>
  <%= debug @campaign %> 

</div>

Электронные письма создаются с вложенным идентификатором Campaign.

С консоли Campaign.emails показывает только 1 электронное письмо, что является правильным.

Но в строке отладки @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

ВОПРОС: С точки зрения, как можноЯ правильно получаю соответствующие электронные письма для кампании, и почему я вижу "фантомную" запись?

1 Ответ

0 голосов
/ 29 ноября 2010

Просто чтобы убедиться, что я правильно понял: у вашего @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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...