0
我正在建立一個市場應用程序,賣家可以列出要銷售的物品。我已經設置了ActionMailer來發送訂單確認電子郵件,該電子郵件在order.save
上觸發。我現在正在嘗試設置送貨確認電子郵件,當賣家點擊一個按鈕表示該物品已發貨時,將會觸發該送貨確認電子郵件。Rails 4 - ActionMailer發送送貨確認電子郵件
我遇到了傳遞給ActionMailer的數據。在下面的郵件發送方法中,我在@order.buyer.email
上收到undefined method 'buyer'
錯誤。我如何將買家信息傳遞給郵件?
我還想將列表數據傳遞給郵件程序,以便我可以在郵件內容中使用列表詳細信息。
模型信息:我有一個用戶模型,一個上市模型和一個訂單模型。訂單模型包含一個buyer_id列,該列是用戶模型的外鍵,而listing_id是列表模型的foriegn鍵。用戶電子郵件存儲在用戶模型中。
這裏是我的代碼:
#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: "[email protected]", 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_path(順序)'。這不夠嗎?我嘗試了你的建議,但我得到一個錯誤,說'找不到沒有ID的訂單' – Moosa 2014-09-10 18:32:22
不,這是不夠的!您可以在鏈接中傳遞訂單或order_id,以便您可以在操作中搜索它。嘗試'Order.find(params [:order_id])' – crispychicken 2014-09-10 18:37:28
明白了。謝謝。我不得不說'shipconf_path(id:order.id)' – Moosa 2014-09-10 18:43:02