Функция почтовой программы Ruby on Rails - PullRequest
0 голосов
/ 08 июля 2019

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

Любая помощь приветствуется

def function(user)
    attachments['example.pdf'] = File.read("public/#{@user.id}_file.pdf")
    @user = user
    mail :subject => 'example', to: user.email, from: 'invoice@domain.com',  track_opens: true
end

Вход:

D, [2019-07-08T10: 51: 56.838759 # 64733] DEBUG -: TestMailer # send_sub_month: обработанная исходящая почта в 1.1ms I, [2019-07-08T10: 51: 56.839003 # 64733] ИНФОРМАЦИЯ -: Завершено 500 внутренних Ошибка сервера в 5 мс (ActiveRecord: 0,4 мс) F, [2019-07-08T10: 51: 56.839615 # 64733] FATAL -: F, [2019-07-08T10: 51: 56.839671 # 64733] FATAL -: NoMethodError (неопределенный метод 'id' для nil: NilClass): F, [2019-07-08T10: 51: 56.839710 # 64733] FATAL -: F, [2019-07-08T10: 51: 56.839750 # 64733] FATAL -: app / mailers / test_mailer.rb: 90: в `send_sub_month '

1 Ответ

0 голосов
/ 08 июля 2019

В журналах говорится, что вы пытаетесь получить доступ к атрибуту id пустого объекта.

NoMethodError (undefined method id' for nil:NilClass)

У вас есть строка, в которой используется пользователь, выше, чем строка, в которой пользователь определен

Попробуйте это:

def function(user)
  @user = user

  attachments['example.pdf'] = File.read("public/#{@user.id}_file.pdf")

  mail :subject => 'example', to: user.email, from: 'invoice@domain.com', track_opens: true
end

Обновлено.

Если вы передаете пользователя в качестве аргумента функции, тогда нет смысласоздайте для него переменную.

def function(user)
  attachments['example.pdf'] = File.read("public/#{user.id}_file.pdf")

  mail :subject => 'example', to: user.email, from: 'invoice@domain.com', track_opens: true
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...