2011-08-27 9 views
5

मैं किसी विशेष आदेश के लिए मील का पत्थर की एक सूची प्रदर्शित करने की कोशिश कर रहा हूं। (आदेश कई मील के पत्थर है।)रेल 3 मैं कैसे उपयोग कर सकता हूं: नामित क्षेत्र में पैरा?

मेरे आदेश मॉडल में, मैं इस है:

scope :open, lambda { 
    joins("join milestones on milestones.order_id = orders.id"). 
     where("order_id = ? AND milestone_status = ?", :params[:order_id], true). 
     group("orders.id") 
    } 

समस्या मैं काम करने के लिए वर्तमान आदेश आईडी हो रही है हो रही है -: पैरामीटर [: ORDER_ID] स्पष्ट रूप से है गलत।

मेरी मार्गों में मैं इस है:

resources :orders do 
    resources :milestones 
    end 

और मेरे यूआरएल इस प्रकार है:

http://127.0.0.1/orders/2/milestones

यह कैसे संभव है? मैंने मैन्युअल रूप से ऑर्डर आईडी के साथ स्थानांतरित करके दायरे का परीक्षण किया है।

- - संपादित करें

प्रति नीचे सलाह के रूप में, मैं अपने मील के पत्थर नियंत्रक में निम्नलिखित डाल दिया है:

<:

@orders = Order.open(params[:order_id]) 

और मेरे विचार में, मैं इस राशि % @ आदेश। प्रत्येक करें | खुला | %>

लेकिन मैं कोई त्रुटि मिलती है:

wrong number of arguments (1 for 0) 

पूर्ण स्टैकट्रेस यहाँ है: http://pastie.org/2442518

+0

पूर्ण स्टैक ट्रेस जोड़ें। –

+0

करेगा। बस बाहर popped। बाद में पेस्ट करेगा। धन्यवाद फिर से –

+0

@ मॉरीसिओ-लिनारेस। पूरे जवाब के साथ मेरा जवाब संपादित किया है - मदद के लिए धन्यवाद। –

उत्तर

4

इस तरह यह निर्धारित करें:

scope :open, lambda { |order_id| 
joins("join milestones on milestones.order_id = orders.id"). 
    where("order_id = ? AND milestone_status = ?", order_id, true). 
    group("orders.id") 
} 

और इस तरह अपने नियंत्रक पर इसे कहते :

def index 
    @orders = Order.open(params[:order_id]) 
end 
+0

धन्यवाद। मील का पत्थर नियंत्रक में डाल दिया है लेकिन मुझे एक त्रुटि मिलती है। मेरा प्रश्न अपडेट किया है। जेएक्स –

+0

क्या आपने '| order_id |' भाग को लैम्ब्डा में जोड़ा था? – Eric

+0

@Eric - yep, ऊपर के रूप में पालन किया। –

संबंधित मुद्दे

 संबंधित मुद्दे