2017-10-17 1 views
0

대리인이 확인되지 않은 경우 하나의 이메일을 생성하여 모든 이름과 함께 보내주십시오. 내가 어디로 잘못 갔는지 모르겠다.레일 메일러 및 레이크 작업 관련 문제

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 has_many agent_cards'와 같은 Agent_card의 상위 에이전트 인 경우 다음과 같이 메소드에서 에이전트를 전달한 다음보기에서 모든 에이전트 카드를 검색 할 수 있습니다. – Maxence