2012-07-05 12 views
6

मैं सरल सबमिट में अपने सबमिट बटन का डिफ़ॉल्ट व्यवहार बदलना चाहता हूं ताकि मुझे स्पष्ट रूप से निर्दिष्ट नहीं करना चाहिए: disabled_with => मेरे सभी रूपों के लिए सच है। मैं simple_form.rb में यह विशेष परिवर्तन कैसे कर सकता हूं?simple_form सबमिट करने के लिए डिफ़ॉल्ट अक्षम_with

उत्तर

3

इस ओवरराइड को मेरे simple_form.rb में जोड़ना एक आकर्षण की तरह काम करता है!

SimpleForm::FormBuilder.class_eval do 
    def submit_with_override(field, options = {}) 
    submit_without_override(field, {:disable_with => 'saving...'}.merge(options)) 
    end 
    alias_method_chain :submit, :override 
end 
+0

मेरे लिए के साथ संगत है पर किसी भी मौजूदा डेटा- के गुणों को ओवरराइड नहीं किया था, यह कुछ बटन और नहीं अन्य लोगों के साथ काम करता है। विशेष रूप से, यह '<% = f.button:% सबमिट करें>' लेकिन नहीं, उदाहरण के लिए, '<% = f.button: बटन%>' क्या आप समझा सकते हैं कि यह कोड क्या कर रहा है, इसलिए मैं काम कर सकता हूं मैं अपनी खुद की सेटिंग्स tweak सकता है? – spume

5

यह रेल के नए संस्करणों में थोड़ा अलग है, क्योंकि संपत्ति को अक्षम करने के साथ अक्षम_with को हटा दिया गया है। http://www.railsonmaui.com/blog/2014/02/23/simple-form-and-disable-processing-by-default/

यहाँ नए कोड है::

SimpleForm::FormBuilder.class_eval do 
    def submit_with_override(field, options = {}) 
    data_disable_with = { disable_with: 'Processing...' } 
    options[:data] = data_disable_with.merge(options[:data] || {}) 
    submit_without_override(field, options) 
    end 
    alias_method_chain :submit, :override 
end 

और धन्यवाद विचार के लिए @Appster लिए मैं इस पर एक लेख लिखा था!

2

ActionView::Helpers::FormBuilder.submit के अनुसार, f.button 1 ~ 2 पैरामीटर accespts, इसलिए निम्नलिखित दोनों कोड काम किए जाने चाहिए।

  • f.submit "MyText", class: "my-btn"
  • f.submit class: "my-btn"

मेरे मामले में, फ़ाइल को प्रारंभ करने के लिए इस कोड जोड़ने ठीक काम किया।

SimpleForm::FormBuilder.class_eval do 
    def submit_with_override(value=nil, options={}) 
    value, options = nil, value if value.is_a?(Hash) 
    data_disable_with = { disable_with: 'Processing...' } 
    options[:data] = data_disable_with.merge(options[:data] || {}) 
    submit_without_override(value, options) 
    end 
    alias_method_chain :submit, :override 
end 

उम्मीद है कि यह मदद करता है।

0

यह सबमिट बटन जो रेल 5.

module DisableDoubleClickOnSimpleForms 
    def submit(field, options = {}) 
    if field.is_a?(Hash) 
     field[:data] ||= {} 
     field[:data][:disable_with] ||= field[:value] || 'Processing...' 
    else 
     options[:data] ||= {} 
     options[:data][:disable_with] ||= options[:value] || 'Processing...' 
    end 
    super(field, options) 
    end 
end 

SimpleForm::FormBuilder.prepend(DisableDoubleClickOnSimpleForms) 
संबंधित मुद्दे