【问题标题】:Issue with rails mailer and rake taskrails mailer和rake任务的问题
【发布时间】:2017-10-18 01:54:00
【问题描述】:

如果代理尚未通过验证,我希望生成一封电子邮件并连同他们的所有姓名一起发送给我。不知道我哪里出错了。

agent_card_mailer.rb

class AgentCardMailer < ActionMailer::Base
  default from: "Help <help@email.com>"

  def not_verified_message(agent_card)
    @agent_card = agent_card

    mail(:to => "me@email.com", :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

【问题讨论】:

    标签: ruby-on-rails ruby actionmailer rake-task


    【解决方案1】:

    您的邮件程序正在设置属性 @agent_card,但模板正在寻找复数 @agent_cards

    【讨论】:

    • 如果你用另一个名字来称呼Something,应用程序找不到它。你在控制器中设置@agent_card 然后你必须在视图中使用它。 (只有在处理模型时,您有时会使用复数形式,例如 @user=User.first @posts=@user.posts.all 帖子在这里是复数形式,因为您期望很多)
    • 实际上你的each do 可能会失败,除非你传入not_verified_message 方法的agent_card 是一个集合,而不是单个记录。给我们您所有的模型,以便为您提供帮助。如果,假设有一个 Agent 是 Agent_card 的父级,例如 Agent has_many agent_cards,则在方法中传递该代理,然后您可以检索视图中的所有代理卡...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-14
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多