Action Mailer'nil:NilClass的未定义方法'[]'

时间:2019-01-07 07:54:34

标签: ruby-on-rails ruby actionmailer

尝试发送电子邮件时出现错误。不知道为什么,但是这是我的控制器和邮件中的代码

这是我下面的控制器代码

class Invitation::InvitesController < ApplicationController

def invite_provider
      @patient = Patient.find_by_id(invite_params[:invitable_id])
      recipient = params[:email]
      InviteMailer.provider_invite(recipient).deliver_now
      flash[:success] = "An email has been sent to"
      redirect_back(fallback_location: root_path)
    end

end

这是我的邮递区号

class InviteMailer < ApplicationMailer
def provider_invite(recipient)
    @recipient = recipient
    mail(
      to: recipient[:email],
      subject: I18n.t('provider_invite_subject')
    )
  end
end

2 个答案:

答案 0 :(得分:1)

在致电mail时,在to选项中,您基本上是在发送params[:email][:email]。我认为那不是你想要的。

recipient = params[:email]

然后

to: recipient[:email],

答案 1 :(得分:0)

您已经致电InviteMailer.provider_invite(recipient),其中收件人是控制器内的email

您可以更改控制器,

InviteMailer.provider_invite(email: recipient)

然后

class InviteMailer < ApplicationMailer
  def provider_invite(attr)
    @recipient = attr[:email]
    mail(
      to: @recipient,
      subject: I18n.t('provider_invite_subject')
    )
  end
end

错误是由于您的参数o没有电子邮件密钥,因此收件人没有通过控制器传递