Ive ने jQuery में एक अच्छा संपादक बनाया है और मैं इसे एक फॉर्म हेल्पर विधि के रूप में जोड़ना चाहता हूं।एक फॉर्म हेल्पर विधि जोड़ें
मैं एक नया फॉर्म सहायक विधि बनाने के बारे में कैसे जाऊं?
f.nice_editor :field
Ive ने jQuery में एक अच्छा संपादक बनाया है और मैं इसे एक फॉर्म हेल्पर विधि के रूप में जोड़ना चाहता हूं।एक फॉर्म हेल्पर विधि जोड़ें
मैं एक नया फॉर्म सहायक विधि बनाने के बारे में कैसे जाऊं?
f.nice_editor :field
form_for
पर उत्पन्न वस्तु ActionView::Helpers::FormBuilder
का एक उदाहरण है। तो आपको बस इतना करना है कि वहां इंस्टेंस विधियों को जोड़ना है।
class ActionView::Helpers::FormBuilder
def custom_field(...)
...
end
end
कुछ शोध मैंने पाया है कि इस काम करता है के बाद:
class ActionView::Helpers::FormBuilder
def nice_editor(conf)
#stuff to draw the editor
end
end
"conf" सभी प्रतीक विकल्पों में से यह करने के लिए पारित किया होता
आदर्श आईडी कॉल करने के लिए सक्षम होना चाहते राय। यह एफ के साथ ठीक काम करता है।
प्रश्न का एक हिस्सा है: आप 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 विस्तार करने के लिए देखते हैं।
क्या आप कुछ और विशिष्टताओं को प्रदान कर सकते हैं? क्या आप "f.nice_editor: foo" जैसे "form_for @foo do | f |" में कुछ करने में सक्षम होना चाहते हैं। ब्लॉक? – Eli
हाँ, यह है कि मैं क्या कर रहा हूँ। – Arcath