ActionMailer 的条件默认值

Conditional default from ActionMailer

我正在尝试找出其中的逻辑,因此当用户 select 下拉列表 selection 时,它会使用该电子邮件地址作为默认地址 from。例如,如果用户 selects store1,它应该从 test1@example.com 发送,store2 应该是 test2@example.com,等等

class ApplicationMailer < ActionMailer::Base
  default from: "test1@example.com"
  layout 'mailer'
end

这是用户用于 select 商店的表格:

<%= form_for @entry do |f| %>
  <div class="form-group">
    <%= f.select :store, Store.all.map { |store| [store.name]  }, :selected => @entry.store %>
  </div>
<% end %>

stores table 中,我有列 nameemail_address

您将无法使用 default 执行此操作 - default 适用于您 不想 自定义电子邮件。

当您编写传递方法时,接受 entrystore 作为参数,并在运行时使用它来选择 from 地址。它看起来像

class ApplicationMailer < ActionMailer::Base
  layout 'mailer'

  def entry_email(entry)
    mail(from: entry.store.email_address)
  end
end

你会用

来称呼它
ApplicationMailer.entry_email(entry).deliver