繁体   English   中英

Rails 4-ActionMailer发送运输确认电子邮件

[英]Rails 4 - ActionMailer Send Shipping Confirmation Email

我正在构建一个市场应用程序,卖家可以在其中列出要出售的物品。 我已经将ActionMailer设置为发送在order.save上触发的订单确认电子邮件。 我现在正在尝试设置一个运送确认电子邮件,当卖方单击一个按钮以指示该物品已运送时,将触发该确认电子邮件。

我对传递给ActionMailer的数据感到困惑。 我在下面的mailer方法中的@order.buyer.email上收到undefined method 'buyer'错误。 如何将买家信息传递给邮件发件人?

我还想将列表数据传递给邮件程序,以便可以在电子邮件内容中使用列表详细信息。

模型信息:我有一个用户模型,一个清单模型和一个订单模型。 订单模型具有“ buyer_id”列和“ listing_id”列,该“ buyer_id”列是“用户”模型的外键,而“ listing_id”是该列表模型的外键。 用户电子邮件存储在用户模型中。

这是我的代码:

#route
get 'shipconf' => "orders#shipconf"

#order_controller
def shipconf
  AutoNotifier.shipconf_email(@order).deliver
end

#AutoNotifier.rb
def shipconf_email(order)
   @order =  order
   mail(to: @order.buyer.email, bcc: "ashfaaqmoosa@gmail.com", subject: 'You have a new order at Outfit Additions.')
end

#sellers admin view table with order info. seller clicks button to send mail.
  <% @orders.each do |order| %>
    <tr>
      <td><%= order.id %></td>
      <td><%= link_to order.listing.name.downcase.titleize, order.listing, data: { no_turbolink: true } %></td>
      <td><%= number_to_currency(order.listing.price) %></td>
      <td><%= order.shipaddress %></td>
      <td><%= best_in_place order, :tracking, :type => :input, :url => listing_order_path(id: order.id, listing_id: order.listing_id) %> </td>
      <td><%= link_to "Send Email", shipconf_path(order), class: "btn btn-sm btn-primary" %></td>
    </tr>
  <% end %>

#order model
belongs_to :listing
belongs_to :buyer, class_name: "User"
belongs_to :seller, class_name: "User"

#user model
has_many :listings, dependent: :destroy
has_many :orders, class_name: "Order", foreign_key: "seller_id"
has_many :purchases, class_name: "Order", foreign_key: "buyer_id"

#listing model
belongs_to :user
has_many :orders

您是否为shipconf动作定义了@order变量?

如果不是,则必须定义它,例如:

#order_controller
def shipconf
  @order = Order.find(params[:id])
  AutoNotifier.shipconf_email(@order).deliver
end

并将您的链接更改为:

shipconf_path(id: order.id)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM