即使未选中复选框,ActionMailer也会发送电子邮件

时间:2014-09-03 15:10:27

标签: ruby-on-rails actionmailer

我有一个Post的复选框(:notify),我想在创建新帖子时发送电子邮件,只有在选中时才会发送。但是,即使没有选中,ActionMailer也会发送电子邮件。以下是代码段:

if @post.save
  unless params[:post][:notify].nil?
    PostMailer.notify_new(@post).deliver
  end
  .........
  ..............

形式:

= bootstrap_form_for @post, remote: true do |f|
  = f.text_area :body
  = f.check_box :notify, label: ""
  = f.submit "Send", class: "button"

如何解决此问题,以便仅在选中通知复选框时才会发送电子邮件? 谢谢!

2 个答案:

答案 0 :(得分:1)

您应该将所有这些移到Post模型中......

class Post
  attr_accessor_with_default :notify, false
  after_create :deliver, :if => Proc.new {|p| p.notify}

  def deliver
    PostMailer.notify_new(self).deliver
  end
end

然后,notify将被视为布尔值。不要忘记在控制器中允许:notify属性。

答案 1 :(得分:0)

我会仔细检查params[:post][:notify]是否是正在寻找的正确参数。如果这些参数总是出现,我会查看你的视图逻辑。此外,如果您要使用此检查方法,请将条件更改为if。例如:

if params[:post][:notify].present?
    PostMailer.notify_new(@post).deliver
end