2013-05-24 5 views
6

काम नहीं कर रहा कैलक्यूलेटर पंजीकरण जारी है ... http://guides.spreecommerce.com/developer/calculators.htmlएक कस्टम स्प्री इस पृष्ठ पर किए गए दस्तावेज़ों के बाद

मैं मॉडल/होड़/कैलकुलेटर में एक वर्ग/

module Spree 
class Calculator::ZipTax < Calculator 
    def self.description 
    "Calculates Tax Rates From Zipcode in TaxRates Table" 
    end 
    def compute(computable) 
    case computable 
    when Spree::Order 
     compute_order(computable) 
    when Spree::LineItem 
     compute_line_item(computable) 
    end 
end 
    def compute_order(order) 
    zipcode = order.bill_address.zipcode[0,5] 
    zip = TaxTable.where(:zipcode => zipcode).first 
    if(zip.present?) 
     rate = zip.combined_rate 
     order.line_items.sum(&:total) * rate 
    else 
     0 
    end 

end 
    end 
end 

और initializers में/होड़ बना लिया है .rb मैंने जोड़ा है:

config = Rails.application.config 
config.spree.calculators.tax_rates << Spree::Calculator::ZipTax 

लेकिन मुझे रेल शुरू करने के लिए नहीं मिल सकता है। मुझे अपरिभाषित विधि '< <' शून्य के लिए: प्रारंभकर्ता/spree.rb फ़ाइल पर NilClass (NoMethodError) प्राप्त करें।

मैं कस्टम कैलक्यूलेटर कैसे पंजीकृत करूं? स्प्री 1.3.2 का उपयोग करना।

उत्तर

9

आप एक after_initialize में आपके विन्यास रैप करने के लिए की आवश्यकता होगी:

config में

/application.rb

config.after_initialize do 
    config.spree.calculators.tax_rates << Spree::Calculator::ZipTax 
end 

आपको एक त्रुटि का सामना कर रहे हैं क्योंकि होड़ कैलकुलेटर है कि कम से प्रारंभ नहीं किया गया है अपने एप्लिकेशन बूट प्रक्रिया में इंगित करें, इसलिए आप कैलकुलेटर को कुछ ऐसा करने की कोशिश कर रहे हैं जो शून्य है।

initializer 'spree.register.calculators' do |app| 
    app.config.spree.calculators.shipping_methods << Spree::Calculator::ZipTax 
end 
+0

धन्यवाद इतना:

एक अन्य विधि, आमतौर पर स्प्री एक्सटेंशन में उपयोग निम्न करने के लिए है। अगली बार मैं स्प्री के दस्तावेज़ों का बारीकी से पालन करने के लिए बेहतर तरीके से जानूंगा;) –

+2

शिपिंग कैलकुलेटर के लिए एक तरफ नोट पर यह सुनिश्चित करें कि कक्षा का नाम 'स्प्री :: शिपिंग :: ' आपके कैलक्यूलेटर में दिखाई देने के लिए है व्यवस्थापक पैनल https://github.com/spree/spree/blob/2a3f91229f65e1c0c7e16eb47da455d3488195bc/core/app/models/spree/shipping_method.rb#L50। स्प्री के संस्करणों को रिलीज़ करने के लिए जल्द ही उस शिपिंग कैलकुलेटर को 'स्प्री :: शिपिंग कैलकुलेटर' से प्राप्त होता है https://github.com/spree/spree/blob/82fd0e0f762f17493c1609a998192272dab83e07/core/app/models/spree/shipping_method.rb#L50 – davidtingsu

+2

I लगता है कि यह वास्तव में एडमिन पैनल में दिखाने के लिए स्प्री :: कैलक्यूलेटर :: शिपिंग :: का क्लास नाम होना चाहिए। – lightcap

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