これは非常に混乱しやすい状況です。私が「新しい」コントローラに入っているからです。コンソールが(正しく)Railsに1つしか表示しないと、デバッグで2つのレコードが表示されるのはなぜですか?
私は、次のビューを使用して新しい電子メールレコード:
<% title "New Email" %>
<div id = "form">
<%= render :partial => 'form' %>
</div>
<div id = "tabs">
<h2>Campaign Activity</h2>
<%= debug @campaign %>
</div>
メールはキャンペーンIDでネストされた作成されます。
コンソールから、campaign.emailsに正しいメールが1件だけ表示されます。
しかし、ディスプレイ2つの電子メールの記録上のデバッグ@campaignライン、次のような二ルックス:
def new
@campaign = Campaign.find(params[:campaign_id])
@email = @campaign.emails.build
end
:
- &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 {}
私は標準の新しいコントローラを持っている新しいビューにしています
質問:ビューから、キャンペーンの関連するメールを正しく取得するにはどうすればよいのですか?「ファンタム」レコードが表示されるのはなぜですか?
ような何かはい、それはだ - それはあなたの「ファントム」レコードです。それらをより簡単に/効率的に反復するには、ビルドを呼び出す前に、電子メールをコントローラのインスタンス変数に割り当てます。つまり、@emails = @ campaign.emailsは、ビューのループで@emailsをオーバーします。 – jenjenut233
私は見る...私はビューにそれを追加する必要がありますので、私は@ campaign.emails.sortを適用して、<=>bを比較するときにファントムのメールでエラーを出力します – Angela