Ruby on rails 轨道3和x2B;操作邮件器-无法循环发送电子邮件

Ruby on rails 轨道3和x2B;操作邮件器-无法循环发送电子邮件,ruby-on-rails,actionmailer,Ruby On Rails,Actionmailer,用户可以创建一个对象,当他创建这个对象时,我想提醒他的追随者 控制器: if @project.save format.html { redirect_to(@project, :notice => 'Project was successfully created.') } format.xml { render :xml => @project, :status => :created, :location => @project } # Send a

用户可以创建一个对象,当他创建这个对象时,我想提醒他的追随者

控制器:

if @project.save
  format.html { redirect_to(@project, :notice => 'Project was successfully created.') }
  format.xml  { render :xml => @project, :status => :created, :location => @project }
  # Send a notification to project owner's followers :
  UserMailer.new_project(@project).deliver
else
  ...
def new_project(project)
    @url  = "http://localhost:3000/"
    @project = project
    # For each of project owner's follower, send an email notification
    @followers = project.owner.followers.all
    @followers.each do |f|
        @u = User.find(f.follower)
        mail(   :to => @u.email,
            :from => '"Beatrix Kiddo" <beatrix@example.com>',
            :subject => "#{project.owner.name} created a new project")
    end
end
user\u mailer.rb:

if @project.save
  format.html { redirect_to(@project, :notice => 'Project was successfully created.') }
  format.xml  { render :xml => @project, :status => :created, :location => @project }
  # Send a notification to project owner's followers :
  UserMailer.new_project(@project).deliver
else
  ...
def new_project(project)
    @url  = "http://localhost:3000/"
    @project = project
    # For each of project owner's follower, send an email notification
    @followers = project.owner.followers.all
    @followers.each do |f|
        @u = User.find(f.follower)
        mail(   :to => @u.email,
            :from => '"Beatrix Kiddo" <beatrix@example.com>',
            :subject => "#{project.owner.name} created a new project")
    end
end
def新建项目(项目)
@url=”http://localhost:3000/"
@项目=项目
#对于每个项目所有者的追随者,发送电子邮件通知
@followers=project.owner.followers.all
@追随者。每个人都有| f|
@u=用户查找(f.follower)
邮件(:to=>@u.email,
:from=>“Beatrix Kiddo”,
:subject=>“#{project.owner.name}创建了一个新项目”)
结束
结束
使用具有2个追随者的用户进行测试:
User.find(1.followers.count=2

Follower.Follower
是跟踪用户的
id

只有一封电子邮件发送给第一个关注者,而第二个关注者没有收到任何东西-怎么了?


[SOLVED]=>方法
.deliver
不支持多条消息。Thx

ActionMailer不支持通过一次
deliver
呼叫发送多条消息。 您必须将循环移到
新项目
方法之外:

而不是

UserMailer.new_project(@project).deliver
试试这个:

@followers = @project.owner.followers.all
@followers.each do |f|
    UserMailer.new_project(@project, f).deliver
end
new_project
方法可以如下所示:

def new_project(project, follower)
    @u = User.find(f.follower)
    mail(:to => @u.email,
         :from => '"Beatrix Kiddo" <beatrix@example.com>',
         :subject => "#{project.owner.name} created a new project")
end
def新项目(项目,跟随者)
@u=用户查找(f.follower)
邮件(:to=>@u.email,
:from=>“Beatrix Kiddo”,
:subject=>“#{project.owner.name}创建了一个新项目”)
结束

您还可以将.deliver调用移动到您的
新项目中。这对我使用Rails 3很有用:

def new_project(project)
  # ...
  @followers.each do |f|
    # ...
    mail(:to => @u.email,
         :from => '"Beatrix Kiddo" <beatrix@example.com>',
         :subject => "#{project.owner.name} created a new project").deliver
  end
end

很好,工作正常---不知道deliver方法不支持多条消息---非常感谢!作为一份备忘录,值得考虑将邮件作为控制器,将邮件方法作为视图的呈现。控制器只能渲染一次。