2012-08-16 33 views
15

मैं base_helper.rb की एक सहायक विधि अधिभावी कोशिश कर रहा हूँ अधिभावी:स्प्री इस का उपयोग करते हुए सहायक विधि

module Spree 
    module BaseHelper.class_eval do 

    def taxons_tree(root_taxon, current_taxon, max_level = 1) 
     ..... 
    end 

    end 
end 

यह मेरे लिए काम नहीं कर रहा। किसी को पता है कि मैं यहाँ क्या याद कर रहा हूँ?

धन्यवाद!

फिक्स्ड:

का उपयोग करना चाहिए:

Spree::BaseHelper.module_eval do 

    def taxons_tree(root_taxon, current_taxon, max_level = 1) 
     ... 
    end 

end 

बजाय।

+0

मेरे लिए केवल 'स्प्री :: बेसहेल्पर.क्लास_एवल' –

उत्तर

20

फिर से खोलने मॉड्यूल बस के रूप में अच्छी तरह से काम करेगा:

module Spree 
    module BaseHelper 
    def taxons_tree(root_taxon, current_taxon, max_level = 1) 
     ... 
    end 
    end 
end 

उपयोग करने के लिए class_eval और module_eval, यह सिर्फ एक बहुत लंबे समय के लिए स्प्री परियोजना में आदत हो गया है कोई विशेष कारण नहीं है।

+2

रयान का उपयोग करते समय काम किया गया, हम इस कोड को कहां रखते हैं। मुझे एक अनुकूलित कार्ट सेगमेंट बनाने के लिए 'link_to_cart'method ओवरराइड करने की आवश्यकता है। मैं फॉर्म PHP आ रहा हूं और यदि यह एक रेल प्रश्न है, तो मुझे खेद है लेकिन एक टिप्पणी की अत्यधिक सराहना करते हैं। –

+3

ऐप/हेल्पर्स के तहत एक फ़ोल्डर बनाएं, जिसे स्प्री कहा जाता है, और कोड को रयान बिग से एक फ़ाइल में डाल दिया गया है, बेस_helper.rb –

+12

@JoaoPereira अगर आप base_helper.rb को कॉल करते हैं, तो spree मूल base_helper.rb लोड नहीं करेगा। ठीक से काम करने के लिए, आपको प्रत्येक फ़ंक्शन को कॉपी/पेस्ट करना होगा। लेकिन अगर आप base_helper_decorator.rb को कॉल करते हैं, तो यह काम करता है। – alexandrecosta