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
不支持多条消息。ThxActionMailer不支持通过一次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方法不支持多条消息---非常感谢!作为一份备忘录,值得考虑将邮件作为控制器,将邮件方法作为视图的呈现。控制器只能渲染一次。