2017-03-06 2 views
0

주문 우편물에 나는 order_id를 사용했다. 그러나 레일스는 오류를 반환한다.레일즈는 우편물에 주문 ID를 찾는다

메일러에서 개체 ID를 찾는 방법은 무엇입니까?

def order_confirmation(order) 
    order = Order.find(order_id) 
    @user = order.buyer_id 
    mail(to: @user.email, subject: 'Confirmação da Compra', &:html) 
    end 
+0

'order'를 전달한 경우 (인스턴스) 이미 'Order' (클래스) 인 경우 다시'찾기 '할 필요가 없습니다. 당신이 얻은 결과를 결과물에 할당하면 좋은 결과를 얻지 못할 것입니다. 'order = Order.find (order_id)'줄을 완전히 생략 해보십시오. – Patru

+0

Btw : 메일러의 인스턴스 변수를 할당하려하지 않을 것입니다. 'order'가'Order' 일지라도'buyer_id'는'FixNum' 일 가능성이 높고'# email'을 전혀 이해하지 못합니다. 사용자가'order'에서 가져온다면'order.buyer' ('id'없이)에 의해 가능할 것입니다. – Patru

답변

0

하기 매개 변수로 order의 인스턴스에 전달하는,하지만 당신은 order_id을 통과하거나 당신이 그것을 사용하기 전에 그것을 유도하려고하지 않습니다. MarsAtomic 당신이 "순서"

def order_confirmation(order) # order contains the order itself 
    order = Order.find(order_id) #order_id is not specified 
    @user = order.buyer_id 
    mail(to: @user.email, subject: 'Confirmação da Compra', &:html) 
end 

으로 전체 순서를 전달하는 언급 한 바와 같이

은 아마 당신은 당신은 ID를 보낼

order = Order.find(order.id) 
0

order = Order.find(order_id) 

를 교체하려고합니다 너는 이것 같이 달성 할 수있는 순서의 :

def order_confirmation(order) 
    order_identification = order.order_id # now order contains the ID number of the order 
    @user = order.buyer_id 
    mail(to: @user.email, subject: 'Confirmação da Compra', &:html) 
    end 

이 줄에는 "주문"에 이미 주문 기록이 있습니다. (내가 한 내가 뭔가 다른 위해 이름을 바꾸는 것이 좋습니다

def order_confirmation(order) 

: 당신은 ID (order.id)를 원하는 경우에는 buyer_id (order.buyer_id)을하려는 경우, 당신은 ORDER_ID (order.order_id)를 원하는 경우 "order_identification") 매개 변수로 주문을 전달하고 내부에서 동일한 매개 변수를 사용하면이를 덮어 씁니다.