Ruby on rails 用户邮件程序失败

Ruby on rails 用户邮件程序失败,ruby-on-rails,email,Ruby On Rails,Email,我在我的用户模型中设置了一个进程,将一群@users发送到一个邮件脚本User_mailer.rb class UserMailer < ActionMailer::Base def mail_out(users) @recipients = { } users.each do |user| @recipients[user.email] = { :zipcode => user.zipcode } end from

我在我的用户模型中设置了一个进程,将一群@users发送到一个邮件脚本User_mailer.rb

class UserMailer < ActionMailer::Base
    def mail_out(users)
    @recipients = { }
    users.each do |user|
      @recipients[user.email] = { :zipcode => user.zipcode }
    end


    from        "no-reply@dailytrailer.net"
    subject     "Check out the trailer of the day!"
    body        :user => user
  end

end
我正在使用该应用程序发送电子邮件。用户正在访问用户邮箱,但我从那里得到一个错误。谁能给我指一下正确的方向吗

用户模型:

class User < ActiveRecord::Base

  acts_as_authentic

  def self.mail_out

    weekday = Date.today.strftime('%A').downcase

    @users = find(:all, :conditions => {"#{weekday}sub".to_sym => 't'})




    UserMailer.deliver_mail_out(@users)



  end

end
用户数据库模式

  create_table "users", :force => true do |t|
    t.string   "email"
    t.date     "birthday"
    t.string   "gender"
    t.string   "zipcode"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.string   "crypted_password"
    t.string   "password_salt"
    t.string   "persistence_token"
    t.string   "mondaysub",         :default => "f", :null => false
    t.string   "tuesdaysub",        :default => "f", :null => false
    t.string   "wednesdaysub",      :default => "f", :null => false
    t.string   "thursdaysub",       :default => "f", :null => false
    t.string   "fridaysub",         :default => "f", :null => false
    t.string   "saturdaysub",       :default => "f", :null => false
    t.string   "sundaysub",         :default => "f", :null => false
  end
错误:

/var/lib/gems/1.8/gems/rails-2.3.5/lib/commands/runner.rb:48: undefined method `name' for #<User:0xb6e8ae48> (NoMethodError)
    from /home/tnederlof/Dropbox/Ruby/daily_trailer/app/models/user_mailer.rb:5:in `mail_out'
    from /home/tnederlof/Dropbox/Ruby/daily_trailer/app/models/user_mailer.rb:4:in `each'
    from /home/tnederlof/Dropbox/Ruby/daily_trailer/app/models/user_mailer.rb:4:in `mail_out'
    from /home/tnederlof/.gem/ruby/1.8/gems/actionmailer-2.3.5/lib/action_mailer/base.rb:459:in `__send__'
    from /home/tnederlof/.gem/ruby/1.8/gems/actionmailer-2.3.5/lib/action_mailer/base.rb:459:in `create!'
    from /home/tnederlof/.gem/ruby/1.8/gems/actionmailer-2.3.5/lib/action_mailer/base.rb:452:in `initialize'
    from /home/tnederlof/.gem/ruby/1.8/gems/actionmailer-2.3.5/lib/action_mailer/base.rb:395:in `new'
    from /home/tnederlof/.gem/ruby/1.8/gems/actionmailer-2.3.5/lib/action_mailer/base.rb:395:in `method_missing'
    from /home/tnederlof/Dropbox/Ruby/daily_trailer/app/models/user.rb:13:in `mail_out'
    from (eval):1
    from /usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `eval'
    from /var/lib/gems/1.8/gems/rails-2.3.5/lib/commands/runner.rb:48
    from /usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
    from /usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `require'
    from script/runner:3
/var/lib/gems/1.8/gems/rails-2.3.5/lib/commands/runner.rb:48:#的未定义方法“name”(命名方法错误)
from/home/tnederlof/Dropbox/Ruby/daily\u trail/app/models/user\u mailer.rb:5:in'mail\u out'
from/home/tnederlof/Dropbox/Ruby/daily_trail/app/models/user_mailer.rb:4:in'each'
from/home/tnederlof/Dropbox/Ruby/daily\u trail/app/models/user\u mailer.rb:4:in'mail\u out'
from/home/tnederlof/.gem/ruby/1.8/gems/actionmailer-2.3.5/lib/action\u mailer/base.rb:459:in`\u发送`'
from/home/tnederlof/.gem/ruby/1.8/gems/actionmailer-2.3.5/lib/action\u mailer/base.rb:459:in'create!'
from/home/tnederlof/.gem/ruby/1.8/gems/actionmailer-2.3.5/lib/action\u mailer/base.rb:452:in'initialize'
from/home/tnederlof/.gem/ruby/1.8/gems/actionmailer-2.3.5/lib/action\u mailer/base.rb:395:in'new'
from/home/tnederlof/.gem/ruby/1.8/gems/actionmailer-2.3.5/lib/action\u mailer/base.rb:395:in'method\u missing'
from/home/tnederlof/Dropbox/Ruby/daily_trail/app/models/user.rb:13:in'mail_out'
从(评估):1
from/usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in'eval'
from/var/lib/gems/1.8/gems/rails-2.3.5/lib/commands/runner.rb:48
from/usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in'gem_original_require'
from/usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in'require'
来自脚本/运行程序:3

我不确定这是否是完整的解决方案(您得到了什么错误?),但这是需要修复的问题:在
body:user=>user
行中,未定义
user
变量。你的意思是做
:user=>@recipients

我在你的代码中注意到的一件事是,你的mailer类不是从Postage::mailer派生的

因此,首先确保已安装最新的PostageApp插件,然后查看以下示例代码:

这里还有一个示例应用程序:

我在代码中注意到的另一个细节是
body:user=>user
不需要,因为您没有在视图中使用
user
变量,除此之外,正如Alex提到的,在该点上没有定义它


希望有帮助

你收到的错误是哪一个?很抱歉忘记添加它,我将它放在了问题中。很抱歉忘记添加它,我将它放在了问题中。我尝试了一下,没有出现错误:)非常感谢。
/var/lib/gems/1.8/gems/rails-2.3.5/lib/commands/runner.rb:48: undefined method `name' for #<User:0xb6e8ae48> (NoMethodError)
    from /home/tnederlof/Dropbox/Ruby/daily_trailer/app/models/user_mailer.rb:5:in `mail_out'
    from /home/tnederlof/Dropbox/Ruby/daily_trailer/app/models/user_mailer.rb:4:in `each'
    from /home/tnederlof/Dropbox/Ruby/daily_trailer/app/models/user_mailer.rb:4:in `mail_out'
    from /home/tnederlof/.gem/ruby/1.8/gems/actionmailer-2.3.5/lib/action_mailer/base.rb:459:in `__send__'
    from /home/tnederlof/.gem/ruby/1.8/gems/actionmailer-2.3.5/lib/action_mailer/base.rb:459:in `create!'
    from /home/tnederlof/.gem/ruby/1.8/gems/actionmailer-2.3.5/lib/action_mailer/base.rb:452:in `initialize'
    from /home/tnederlof/.gem/ruby/1.8/gems/actionmailer-2.3.5/lib/action_mailer/base.rb:395:in `new'
    from /home/tnederlof/.gem/ruby/1.8/gems/actionmailer-2.3.5/lib/action_mailer/base.rb:395:in `method_missing'
    from /home/tnederlof/Dropbox/Ruby/daily_trailer/app/models/user.rb:13:in `mail_out'
    from (eval):1
    from /usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `eval'
    from /var/lib/gems/1.8/gems/rails-2.3.5/lib/commands/runner.rb:48
    from /usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
    from /usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `require'
    from script/runner:3