2013-08-06 6 views
5

मैं अपने आवेदन में स्प्री 2.0.0 स्थिर का उपयोग कर रहा हूं। उत्पाद शो पृष्ठ पर सभी प्रकार रेडियो बटन के रूप में प्रदर्शित होते हैं। मैं बस उन्हें एक बूंद में दिखाना चाहता हूं। इस पर कोई विचार?रेल पर रूबी ड्रॉप डाउन में वेरिएंट कैसे प्रदर्शित करें?

धन्यवाद।

उत्तर

8

नोट: यह समाधान स्प्री "टेम्पलेट प्रतिस्थापन विधि" लागू करता है, विशेष रूप से, जब आपके पास अपने एप्लिकेशन डिज़ाइन में व्यापक डिज़ाइन परिवर्तन होता है या आपके कस्टम डिज़ाइन का उपयोग होता है। यहाँ देखें

http://guides.spreecommerce.com/developer/view.html

अन्यथा का उपयोग करें "विकृत करना" विधि यदि u स्प्री दुकान या मामूली परिवर्तन के डिफ़ॉल्ट डिजाइन का उपयोग कर रहे हैं।

जाएं:

एप्लिकेशन/विचारों/होड़/उत्पादों/_cart.html.erb। और अंदर के कार्ट फॉर्म में निम्नलिखित पंक्ति लिखी।

<%= select_tag "products[#{@product.id}]",  options_for_select(@product.variants_and_option_values(current_currency).collect{|v| ["#{variant_options(v)} #{variant_price(v)}", v.id]})%> 

#(if you don't have this file(app/views/spree/products/_cart_form.html.erb) go to github spree2.0.0 branch and use it in your product.) 

आशा है कि यह आपके लिए भी काम करेगा।

धन्यवाद

1

स्प्री 2.2.0.beta (और शायद पहले) के रूप में, आप शामिल विकृत करना मणि का उपयोग करना चाहिए इस संशोधन करने के बजाय सीधे कोर फ़ाइलों का संपादन किया जाना है।

होड़ दृश्यपटल दृश्य फ़ाइल app/views/spree/products/_cart_form.html.erb में स्थित कोड की सामग्री को बदलने के लिए (नाम नोटिस स्प्री v2.0 के बाद से बदल गया है):

app/overrides/spree/products/_cart_form/ पर एक फ़ोल्डर बनाएँ और के नाम के साथ एक .deface फ़ाइल जोड़ने आपकी पसंद उदा। variant_dropdown.html.erb.deface इस मामले में, चूंकि प्रतिस्थापन कोड में गतिशील रूबी कोड होता है, .erb आवश्यक है।

फिर, इस फ़ाइल की सामग्री में, उस कोड का चयन करें जिसे आप कोर से संपादित करने का प्रयास कर रहे हैं और इसे अपने स्वयं के कस्टम कोड से प्रतिस्थापित करें। यहां बताया गया है कि मेरी .deface फ़ाइल कैसी दिखती है।

<!-- replace_contents "[data-hook='inside_product_cart_form'] #product-variants, #inside-product-cart-form[data-hook] #product-variants" --> 

<h6 class="product-section-title"><%= Spree.t(:licenses) %></h6> 
<%= select_tag "products[#{@product.id}]", 
    options_for_select(@product.variants_and_option_values(current_currency).collect{ |v| ["#{variant_options(v)} #{variant_price(v)}", v.id] })%> 

इस का मुद्दा यह है कि स्प्री के किसी भी भावी अपडेट अन्यथा अपने कोड के ऊपर लिख या मैन्युअल रूप से अपने कोड हर बार पुनर्लेखन के लिए आप की आवश्यकता होगी है। यह data चयनकर्ता में हुक करके आपके परिवर्तनों को भविष्य में धोखा देने का प्रयास करता है जो अद्यतनों पर बने रहेंगे।

+0

क्या यह एक कामकाजी उदाहरण है? मुझे नीचे बताए गए 404 त्रुटि मिल रही है ... –

2

चुनिंदा टैग को "variant_id" की आईडी की भी आवश्यकता होती है अन्यथा आपको ऑर्डर पॉप्युलेट कार्रवाई पर 404 त्रुटि मिल जाएगी।

+1

क्या आप इस काम को प्राप्त करने के लिए उपयोग किए गए कोड को जोड़ना चाहते हैं। मैं रेल के लिए नया हूं इसलिए सुनिश्चित नहीं है कि variant_id को कहाँ जाना है। धन्यवाद –

0

यहां मैंने स्प्री 3.0 के लिए क्या किया है। इसे एक फ़ाइल \ app \ overrides \ use_drop_down_for_variants.rb

Deface::Override.new(:virtual_path => 'spree/products/_cart_form', 
        :name => 'use_drop_down_for_product_variants', 
        :replace_contents => '[id="product-variants"]', 
        :text => ' 
            <h3 class="product-section-title"><%= Spree.t(:variants) %></h3> 
           <%= select_tag "variant_id", 
    options_for_select(@product.variants_and_option_values(current_currency).collect{ |v| ["#{variant_options(v)} #{variant_price(v)}", v.id] })%> 
'); 
संबंधित मुद्दे