Почему переменная моего экземпляра не установлена ​​в представлении моей почтовой программы? - PullRequest
1 голос
/ 21 января 2012

По какой-то причине мои переменные экземпляра не устанавливаются в этом ActionMailer. Другие ActionMailers, кажется, работают нормально. Есть идеи, что может быть причиной этого? Является ли UserMailer ограниченным словом perpahps?

Использование рельсов 3.1

# app/mailers/user_mailer.rb

class UserMailer < ActionMailer::Base
  default from: 'My Name <myname@example.com>'

  def registration_confirmation(user)  
    # Don't send email if we don't have an email address to send it to or the user is already confirmed 
    return unless user and user.email and not user.confirmed_at

    # Set global variable for mail view
    @my_message = 'Hello world!'

    # Send email
    mail(to: "#{user.name} <#{user.email}>", subject: 'Please confirm your email address')  
  end

end


# app/views/user_mailer/registration_confirmation.text.erb

Hello who? <%= @my_message %> # Simply returns 'Hello who? '

Ответы [ 2 ]

1 голос
/ 21 января 2012

Получается эта строка:

return unless user and user.email and not user.confirmed_at

не прервал отправку электронного письма.Вместо этого он просто прерывает код UserMailer, который вы видели выше, и сразу переходит к представлению, которое теперь ссылается на переменную экземпляра, которая не была установлена.Таким образом, по сути, ActionMailer работает точно так же, как обычный контроллер.

Чтобы решить эту проблему, я переместил условия, которые проверяют, отправлять ли электронное письмо в место, где я запускаю команду UserMailer.

0 голосов
/ 08 августа 2013

Вы должны будете перезапустить свои службы и работников, если таковые имеются, чтобы изменения отражали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...