2017-10-17 2 views
0

Wenn ein Agent nicht verifiziert wurde, möchte ich eine E-Mail generiert und an mich mit all ihren Namen gesendet werden. Nicht sicher, wo ich falsch gelaufen bin.Problem mit Rails Mailer und Rake Aufgabe

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 

Fehler:

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

Antwort

1

Ihr Mailer setzt das Attribut @agent_card, aber die Vorlage sucht nach dem Plural @agent_cards

+0

Welcher ist der richtige Weg? –

+0

Wenn Sie Something unter einem anderen Namen aufrufen, kann die App sie nicht finden. Sie setzen '@ agent_card' im Controller, dann müssen Sie das selbe in der Ansicht verwenden. (Es ist nur im Umgang mit Modellen, die Sie manchmal pluralisieren wie '@ user = User.first' '@ posts = @ user.posts.all' Post ist hier pluralisiert, weil Sie viele erwarten) – Maxence

+0

Eigentlich wird Ihr' jedes tun 'wahrscheinlich scheitern, es sei denn, 'agent_card', das Sie in der 'not_verified_message'-Methode übergeben, ist eine Sammlung, kein einzelner Datensatz. Gib uns alle deine Modelle, um dir zu helfen. Wenn, sagen wir mal, es einen Agenten gibt, der ein Elternteil von Agent_card ist, wie 'Agent has_many agent_cards' dann übergeben Sie den Agenten in der Methode und dann können Sie alle Agentenkarten in der Ansicht abrufen ... – Maxence