Rails:为什么只有一封电子邮件发送到循环的最后一个成员?

时间:2016-09-14 13:40:56

标签: ruby-on-rails

我非常喜欢铁路新手!

我正在尝试为一种在线委员会会议编写方法。有固定数量(9)的用户。当用户提出讨论和/或投票的主题时,提交按钮需要向所有成员发送电子邮件。

app / mailers / user_mailer.rb中的

我有: -

class UserMailer < ApplicationMailer

  def new_topic_alert(topic)
    @users = User.all
    @users.each do |user|
      mail to: user.email, subject: "New topic alert"
    end
  end
end

作为app / controllers / topics_controller.rb的一部分,我有: -

def send_alert
  @topic = Topic.new(topic_params)
  UserMailer.new_topic_alert(@topic).deliver_now
end

和: -

def create
  @topic = Topic.new(topic_params)
  if @topic.save
    send_alert
    flash[:info] = "New Topic alert emails sent."
    redirect_to root_url
  else
    render 'new'
  end
end

请注意,为什么user_mailer中的循环只向列表的最后一个人发送电子邮件。通过合并“byebug”,我已经证明它可以浏览所有用户的电子邮件。

1 个答案:

答案 0 :(得分:1)

尝试如下:

def send_alert
  @topic = Topic.new(topic_params)
  users = User.all
  users.each do |u|
    UserMailer.new_topic_alert(@topic, u).deliver_now
  end
end

并像

一样更新邮件程序
class UserMailer < ApplicationMailer

  def new_topic_alert(topic,user)
    mail to: user.email, subject: "New topic alert"
  end
end