2017-10-17 16 views
0

エージェントが検証されていない場合は、1つの電子メールを生成して、すべての名前を付けて送信します。どこが間違っているのか分かりません。rails mailerとrakeタスクの問題

agent_card_mailer.rb

class AgentCardMailer < ActionMailer::Base 
    default from: "Help <[email protected]>" 

    def not_verified_message(agent_card) 
    @agent_card = agent_card 

    mail(:to => "[email protected]", :subject => "Agent License Issues") 
    end 
end 

not_verified_message.html.erb

Hi there,<br><br> 

These agents have not been verified.<br><br> 

<% @agent_cards.each do |agent_card| %> 
    <%= agent_card.agent.name %><br> 
<% end %> 

issue_with_license.rake

namespace :agent_cards do 
    desc 'Send out weekly email for agents with issues' 
    task remind_license_issues: :environment do 
    AgentCard.all.each do |agent_card| 
     if agent_card.verified == false 
     AgentCardMailer.not_verified_message(agent_card).deliver_now 
     end 
    end 
    end 
end 

エラー:

ActionView::Template::Error: undefined method `each' for nil:NilClass 

答えて

1

あなたのメーラーは属性@agent_cardを設定していますが、テンプレートは複数形を探しています@agent_cards

+0

正しい方法はありますか? –

+0

何か別の名前で呼び出すと、アプリはそれを見つけることができません。コントローラーで '@ agent_card'を設定すると、ビューで同じものを使用する必要があります。 (あなたが '@ user = User.first' @ post = @ user.posts.all'のように複数形にしているモデルを扱うのは、あなたが多くを期待しているのでここで複数化されているモデルを扱うときだけです) – Maxence

+0

実際に' each do'はおそらく'not_verified_message'メソッドで渡した' agent_card'がコレクションではなく、一つのレコードでなければ失敗します。あなたのお手伝いをするために、私たちにすべてのモデルをご提供ください。たとえば、Agent_cardの親であるAgent has_many agent_cardsのようなエージェントがあり、そのメソッドにエージェントを渡してから、ビュー内のすべてのエージェントカードを取得できるとします。 – Maxence

関連する問題