2012-05-25 13 views
9

रेल द्वारा एकाधिक प्राप्त करें, मेरे पास Product मॉडल है। कभी-कभी मुझे एक ही समय में एकाधिक products प्राप्त करने की आवश्यकता होती है (लेकिन सूची पूरी तरह गतिशील है, इसलिए इसे रेल की तरफ नहीं किया जा सकता है)।रेल आईडी

तो, आइए इस कॉल के लिए मुझे एक कॉल में उत्पाद 1, 3, 9, 24 प्राप्त करने की आवश्यकता है। क्या यह संभव है? यदि हां, तो क्या मुझे इसके लिए एक कस्टम मार्ग चाहिए और मैं अपने नियंत्रक में क्या डालूं?

यानी इस काम की तरह कुछ करता है? /products/1,3,9,24

+0

क्या आप नियंत्रक/अनुरोध स्तर, या मॉडल/डेटाबेस स्तर के बारे में बात कर रहे हैं? – x1a4

+0

आपको थोड़ा और समझाना होगा। "रेल पक्ष पर नहीं किया जा सकता" से आपका क्या मतलब है? – tybro0103

+0

@ x1a4 हां, नियंत्रक/अनुरोध स्तर। मुझे संपादित करने दो। – Baub

उत्तर

24

मुझे नहीं लगता कि आपको मार्गों को बदलने की आवश्यकता होनी चाहिए। आपको बस अपने नियंत्रक/मॉडल में उन्हें पार्स करना होगा।

def show 
    @products = Product.find params[:id].split(',') 
end 

आप तो http://localhost/products/1,3,9,24 के लिए एक अनुरोध भेजते हैं, तो @products 4 रिकॉर्ड लौटना चाहिए।

+1

अंत में रखते हैं तो यह काम करता है! :) धन्यवाद। – Baub

+0

धन्यवाद समाधान! –

3
Product.where(:id => params[:ids].split(',')) 
+0

यह काम करता है, लेकिन मार्ग की आवश्यकता नहीं है। – Baub

+1

यह ध्यान रखना महत्वपूर्ण है कि आपका वाइल्डकार्ड सबकुछ पकड़ लेता है, इसलिए यदि आप/उत्पादों/1,2,3,4/संपादित करने के लिए अनुरोध भेजते हैं, तो पैरा [: ids] में '1,2,3,4/संपादित करें' –

+0

होगा और आप जानते हैं कि यह ठीक है अगर आप इसे –

5

मैं इस एक सीमित दायरे के साथ सूचकांक के लिए एक अनुरोध पर विचार करेगा, एक तरह से एक खोज की तरह है, तो मुझे क्या करना होगा:

class ProductsController < ApplicationController 
    def index 
    @products = params[:product_ids] ? Product.find(params[:product_ids]) : Product.all 
    end 
end 

और फिर एक यूआरएल सरणी के साथ इस से लिंक:

<%= link_to 'Products', products_path(:product_ids => [1, 2, 3]) %> 

इस मानक गैर सूचीबद्ध यूआरएल सरणी कि

तरह का तरह
product_ids[]=1&product_ids[]=2 ... 

आशा है कि मदद करता है लग रहा है बनाता है।

+0

पूरी तरह से सहमत हैं। 'इंडेक्स' एक्शन के साथ इस अनुरोध को प्रोसेस करना संभवतः शेष नियंत्रक तर्क के साथ बेहतर फिट होगा। – colllin

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