2010-01-24 12 views
5

Ive ने jQuery में एक अच्छा संपादक बनाया है और मैं इसे एक फॉर्म हेल्पर विधि के रूप में जोड़ना चाहता हूं।एक फॉर्म हेल्पर विधि जोड़ें

मैं एक नया फॉर्म सहायक विधि बनाने के बारे में कैसे जाऊं?

f.nice_editor :field 
+0

क्या आप कुछ और विशिष्टताओं को प्रदान कर सकते हैं? क्या आप "f.nice_editor: foo" जैसे "form_for @foo do | f |" में कुछ करने में सक्षम होना चाहते हैं। ब्लॉक? – Eli

+0

हाँ, यह है कि मैं क्या कर रहा हूँ। – Arcath

उत्तर

6

form_for पर उत्पन्न वस्तु ActionView::Helpers::FormBuilder का एक उदाहरण है। तो आपको बस इतना करना है कि वहां इंस्टेंस विधियों को जोड़ना है।

class ActionView::Helpers::FormBuilder 
    def custom_field(...) 
    ... 
    end 
end 
1

कुछ शोध मैंने पाया है कि इस काम करता है के बाद:

class ActionView::Helpers::FormBuilder 
    def nice_editor(conf) 
     #stuff to draw the editor 
    end 
end 

"conf" सभी प्रतीक विकल्पों में से यह करने के लिए पारित किया होता

आदर्श आईडी कॉल करने के लिए सक्षम होना चाहते राय। यह एफ के साथ ठीक काम करता है।

9

प्रश्न का एक हिस्सा है: आप nice_editor कोड कहां रखते हैं? मुझे नहीं लगता कि आपकी स्थापना में क्लास एक्शन व्यू :: हेल्पर्स :: फॉर्मबिल्डर को सीधे संपादित करना एक अच्छा विचार है। इसके बजाय, ऐप/हेल्पर्स में फ़ाइलों में से एक में अपना कोड डालें। FormBuilder में एक्सटेंशन विधियों को जोड़ने के कई तरीके हैं।

उदाहरण के लिए, आप एक सहायक फ़ाइल items_helper.rb है लगता है:

module ItemsHelper 
    # this is one way to define new instance methods 
    ActionView::Helpers::FormBuilder.class_eval do 
     def nice_editor(conf,*opts) 
      ... 
     end 
    end 
end 

इसके अलावा, इस good discussion जो दिखाता है self.included का उपयोग करने के लिए कैसे() FormBuilder विस्तार करने के लिए देखते हैं।

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