2014-09-10 1 views
0

저는 판매 인이 판매 할 품목을 나열 할 수있는 마켓 플레이스 앱을 제작하고 있습니다. order.save에서 실행되는 주문 확인 이메일을 보내도록 ActionMailer를 설정했습니다. 나는 이제 판매자가 상품이 배송되었음을 알리는 버튼을 클릭 할 때 실행되는 운송 확인 이메일을 설정하려고합니다.Rails 4 - ActionMailer 배송 확인 이메일 보내기

나는 ActionMailer로 전달되는 데이터에 집착하고 있습니다. 아래 메일러 방법에서 @order.buyer.emailundefined method 'buyer' 오류가 발생합니다. 구매자 정보를 우편 발송자에게 전달하려면 어떻게해야합니까?

메일 내용에 목록 세부 정보를 사용할 수 있도록 메일 링리스트에 목록 데이터를 전달하고 싶습니다.

모델 정보 : 사용자 모델, 목록 모델 및 주문 모델이 있습니다. 주문 모델에는 User 모델의 외래 키인 buyer_id 열과 목록 모델의 foriegn 키인 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: "[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 

답변

1

당신이 당신의 shipconf 조치에 대한 @order 변수 어딘가를 정의나요 : 여기

내 코드?

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

그리고 귀하의 링크를 변경 :이 같은 예를 들어,을 정의하지 않으면

내 버튼에서

shipconf_path(id: order.id) 
+0

, 나는 (방법'shipconf_path에 순서를 전달 주문)'. 그게 충분하지 않니? 나는 당신의 제안을 시도했지만'ID없이 주문을 찾지 못했습니다 '라는 오류 메시지가 발생했습니다 – Moosa

+0

아니요, 충분하지 않습니다! 액션 내에서 검색 할 수 있도록 링크 내에 주문 또는 order_id를 전달합니다. 'Order.find (params [: order_id])'시도해보십시오. – crispychicken

+0

알겠습니다. 감사. 나는'shipconf_path (id : order.id)' – Moosa