Проблемы с почтовым штемпелем – нет ошибки метода

Я пытаюсь интегрировать почтовую программу в свое приложение. Мне нужно отправить транзакционное электронное письмо при размещении нового заказа. Я продолжаю сталкиваться с ошибкой отсутствия метода при передаче получателя почтовой программе. Это прекрасно работает, когда я определяю получателя явно, но мне нужно передать переменную получателя из моей модели в сообщение, чтобы получить желаемое поведение. Любая помощь в отладке будет принята с благодарностью, так как я не могу отследить свою ошибку.

Вывод ошибки:

NoMethodError (undefined method `recipient' for nil:NilClass):
  app/mailers/bed_mailer.rb:8:in `bed_email

Почтовая программа:

  class BedMailer < ApplicationMailer
  default :from => '[email protected]'

  def bed_email(bed)
    @bed = bed
     mail(
  :subject => 'Critical Documentation Needed' ,
  :to  => @bed.recipient ,
  :track_opens => 'true',
  :body => 'something'
)
  end
end

Действие связанного контроллера:

def create
    @bed = current_supplier.beds.build(bed_params)

    respond_to do |format|
      if @bed.save
        BedMailer.bed_email(@beds).deliver_later

        format.html { redirect_to @bed, notice: 'Bed was successfully created.' }
        format.json { render :show, status: :created, location: @bed }
      else
        format.html { render :new }
        format.json { render json: @bed.errors, status: :unprocessable_entity }
      end
    end

Изменить/обновить

Я исправил ошибку опечатки, упомянутую в комментарии ниже, но теперь сталкиваюсь с ошибкой отсутствия шаблона, когда я удаляю строку :body для пересылки в мой предпочтительный макет почтовой программы Missing template bed_mailer/bed_email with "mailer". Searched in: * "bed_mailer"

Предполагаемый макет:

bed_mailer.html.erb

<h2> Critical Documentation Needed: </h2>
    <p> In order to quickly process your referral for <strong> <%= @bed.patient_name %> </strong>, we need additional documentation.
    <br>
    For your convience, please follow this link to electronically complete the documentation process: </p>
    <br>
    <h4> <%= link_to 'Click Here to complete the necessary documents', edit_bed_url(:id => @bed.id, :token => @bed.token) %> </h4>
    <br>

person PSCampbell    schedule 09.12.2015    source источник


Ответы (1)


Я считаю, что у вас есть опечатка в вашем действии контроллера.

Вы должны заменить @beds на @bed

person yez    schedule 09.12.2015
comment
Хороший улов - респект. Столкнулся с новой ошибкой шаблона, см. правку выше - person PSCampbell; 09.12.2015