我有一个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"
如何解决此问题,以便仅在选中通知复选框时才会发送电子邮件? 谢谢!
答案 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