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
正しい方法はありますか? –
何か別の名前で呼び出すと、アプリはそれを見つけることができません。コントローラーで '@ agent_card'を設定すると、ビューで同じものを使用する必要があります。 (あなたが '@ user = User.first' @ post = @ user.posts.all'のように複数形にしているモデルを扱うのは、あなたが多くを期待しているのでここで複数化されているモデルを扱うときだけです) – Maxence
実際に' each do'はおそらく'not_verified_message'メソッドで渡した' agent_card'がコレクションではなく、一つのレコードでなければ失敗します。あなたのお手伝いをするために、私たちにすべてのモデルをご提供ください。たとえば、Agent_cardの親であるAgent has_many agent_cardsのようなエージェントがあり、そのメソッドにエージェントを渡してから、ビュー内のすべてのエージェントカードを取得できるとします。 – Maxence