Rails 5.1邮件错误的参数数量0预计2
问题描述:
我正在Ruby 2.4.1中的Rails 5.1.2应用程序。我创建一个简单的邮件使用在类如下所示:Rails 5.1邮件错误的参数数量0预计2
class PagingMailer < ApplicationMailer
include SendGrid
default from: Rails.application.secrets.no_reply_email
def message(paging_id, email)
@paging = Paging.find(paging_id)
mail to: email, subject: "#{@paging.user.username} has sent you a message"
end
end
在PagingMailer
类的message
方法采用paging_id
(整数)的参数,被传递的电子邮件地址的第二个参数(串)。最初我有一个sidekiq工人被解雇,并且它不会给出错误数量的参数,给出0预期的2例外。
所以我启动了一个滑轨控制台,并试图做一个简单的测试,让sidekiq避开以防万一。
Loading development environment (Rails 5.1.2)
irb(main):001:0> PagingMailer.message(33, "[email protected]").deliver
PagingMailer#message: processed outbound mail in 69.1ms
ArgumentError: wrong number of arguments (given 0, expected 2)
from app/mailers/paging_mailer.rb:5:in `message'
from app/mailers/paging_mailer.rb:7:in `message'
from (irb):1
stacktrace指向消息方法中的第5行和第7行,这里的常用主题是email参数。
作为一个测试,我尝试删除第二个参数和硬编码“[email protected]”到邮件:部分,所以该方法只会采取一个参数paging_id
。当我火从Rails的控制台,我得到如下:
irb(main):003:0> PagingMailer.message(33).deliver
PagingMailer#message: processed outbound mail in 27.4ms
ArgumentError: wrong number of arguments (given 0, expected 1)
from app/mailers/paging_mailer.rb:5:in `message'
from app/mailers/paging_mailer.rb:7:in `message'
我从字面上传递参数的方法和它没有看到它,即使它被作为一个对象传递。
应该指出我的应用程序中有一些其他的邮件程序,它们的配置类似于使用2个参数并且它们正确执行。但是,我正在努力拼凑这个特定的邮件。
不知道我是否错过了一些完全明显的东西,或者这可能是某种Rails错误。
任何帮助,您可以提供非常感谢。
答
更改方法“消息”的名称。 ActionMailer :: Base定义了一个名为'message'的attr_internal,所以创建了读写实例方法,并且覆盖它。
我认为你的问题与SendGrid设置有关。擦除'包括SendGrid'并测试是否有效。 –
@PapayaLabs不,这不是问题。我的其他邮件类使用相同的包含声明和工作就好了。我通过您的请求删除了它,并产生相同的异常。 – nulltek
所以也许在#{@paging.user.username}。我不知道你的寻呼模式如何。我没有看到任何其他问题。 –