Mailer函数Ruby on Rails问题

时间:2019-07-08 08:56:58

标签: ruby-on-rails-5

我正在尝试使用用户ID编译函数,但无法解决。尝试了不同的方法,但在生产日志中得到零响应。

欢迎任何帮助

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]调试-:   TestMailer#send_sub_month:处理出站邮件的时间为1.1毫秒,   [2019-07-08T10:51:56.839003#64733]信息-:已完成500内部   服务器错误(5毫秒)(ActiveRecord:0.4毫秒)F,   [2019-07-08T10:51:56.839615#64733]致命-:F,   [2019-07-08T10:51:56.839671#64733]致命-:NoMethodError   (nil:NilClass的未定义方法'id'):F,   [2019-07-08T10:51:56.839710#64733]致命-:F,   [2019-07-08T10:51:56.839750#64733]致命-:   app / mailers / test_mailer.rb:90:in'send_sub_month'

1 个答案:

答案 0 :(得分:0)

日志表明您正在尝试访问空对象的addPage(Page page)属性。

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