2017-10-17 40 views
0

如果代理程序未經過驗證,我希望生成一封電子郵件並將其全部發送給我。不知道我錯了哪裏。Rail郵件程序和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

如果您通過其他名稱調用Something,應用程序無法找到它。您在控制器中設置'@ agent_card',然後您必須在視圖中使用相同的名稱。 (只有在處理模型時,你有時像'@ user = User.first'' @ posts = @ user.posts.all'這樣的複數形式,因爲你期望很多,所以在這裏複數化) – Maxence

+0

其實你的'each do'可能除非您在'not_verified_message'方法中傳遞的'agent_card'是一個集合,而不是單個記錄。給我們所有的模型,以幫助你。如果我們假設有一個代理是Agent_card的父代,如'Agent has_many agent_cards',然後在方法中傳遞代理,然後可以在視圖中檢索所有代理卡片... – Maxence