【发布时间】:2010-09-16 22:29:38
【问题描述】:
我收到一个漂亮的错误:
failed with NoMethodError: You have a nil object when you didn't expect it!
You might have expected an instance of ActiveRecord::Base.
The error occurred while evaluating nil.[] - 3 failed attempts
我的控制者:
CardSignup.all.each do |user|
Delayed::Job.enqueue MassEmail.new(user, params[:subject], params[:editor1])
end
mass_email.rb
class MassEmail < Struct.new(:user, :subject, :message)
def perform
Notifier.deliver_email_blast(user, subject, message)
end
end
_form.html.haml
- form_tag admin_email_blast_path do
Subject
%br
= text_field_tag 'subject'
%br
Body
%br
= text_area_tag 'message', '', :name => 'editor1'
%br
= submit_tag 'Send Email', :class => 'button'
:plain
<script type="text/javascript">
CKEDITOR.replace( 'editor1' );
</script>
问题是因为我没有正确传递变量..我该如何正确地做到这一点?
注意:在我使用 params[:subject] 和 params[:editor1] 实现 delay_jobs 之前它运行良好,所以我必须以某种方式保留它们。
我在没有Delayed_Jobs 的情况下尝试了这个,MassEmail.new 甚至没有在我的日志中留下回溯。
我也在我的控制台中尝试过这个,但它冻结了。
mass_email.rb 或def perform 中的电话肯定有问题
【问题讨论】:
-
很高兴知道
NoMethodError是在哪里提出的。 -
我如何找到它?这是它的前身 2010-09-14T11:57:18-0400: * [Worker(delayed_job host:Daniel-Levines-iMac-3.local pid:754)] 在 MassEmail 2010-09-14T11:57 上获得锁定: 18-0400: * [作业] 延迟作业主机:Daniel-Levines-iMac-3.local pid:754
-
对不起,但这没有帮助。通常你会得到一个完整的回溯,并且在 ErrorMeassage 附近必须是这样的:
some_path/some_file.rb:213。 -
是的..即使我把它从延迟的工作中取出,它甚至不会报告错误。疯了吧?
标签: ruby-on-rails ruby actionmailer delayed-job