2010-01-04 12 views
11

किसी नए सर्वर पर एक रेल ऐप को पुनर्स्थापित नहीं कर रहा है। ऐप का हिस्सा उपयोगकर्ता द्वारा चुने गए बटन के आधार पर दो दिशाओं में से एक में कांटा सकता है। यह हिस्सा काम नहीं कर रहा है, और जब मैं लॉग को देखता हूं तो मैं मानों को देखता हूं जो मैंने फॉर्म दिया है, पैरामीटर हैश के commit भाग के लिए छोड़ दें। ऐसा लगता है कि ऐप अपेक्षित रूप से काम नहीं कर रहा है (क्योंकि params[:commit] में कुछ भी नहीं है, लेकिन मुझे नहीं पता कि प्रतिबद्धता क्यों पारित नहीं की जाएगी; अनुरोध निश्चित रूप से एक POST अनुरोध है, और अन्य सभी पैरामीटर वहां हैं।रेल "प्रतिबद्ध" बटन पैरामीटर

+0

क्या आपको अभी तक कोई समाधान मिला है? मुझे एक ही समस्या है क्योंकि मैंने अपने वेब डिज़ाइनर से एक के साथ अपना टेम्पलेट अपडेट किया है। 'मूल' टेम्पलेट का उपयोग करें और सभी फ़ाइल है, लेकिन डिज़ाइनर (HTML मान्य) टेम्पलेट का उपयोग करें और मुझे प्रतिबद्ध मान नहीं मिलते हैं। –

+3

मेरे मामले में यह वास्तव में फ़ॉर्म सबमिट करने से पहले एक jQuery पॉपअप होने के कारण था। –

+2

उस टिप्पणी के लिए धन्यवाद वेन, जिसने मुझे मेरे लिए यह कारण बताया। मेरे मामले में, हमारे पास एक सामान्य jQuery सबमिट ईवेंट बाध्यकारी था जो सबमिट बटन को अक्षम कर रहा था (डबल सबमिट से बचने के लिए)। इस फ़ॉर्म से निश्चित चीजों को हटा रहा है। – chrisrbailey

उत्तर

7

एक अक्षम बटन-ऑन-प्रस्तुत की सुविधा के साथ एक simular समस्या था। हमने इसे सबमिट करने से पहले एक ही नाम और मूल्य के साथ एक छिपी इनपुट फ़ील्ड जोड़कर हल किया।

function disableButtonAndSubmit() 
{ 
    var input = $("<input type='hidden' />").attr("name", $(this)[0].name).attr("value", $(this)[0].value); 
    $(this).closest('form').append(input); 
    $(this).attr('disabled', 'disabled').html('Loading…'); 
    $(this).closest('form').submit(); 
} 

$('#somewhere button').click(disableButtonAndSubmit); 
0

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

यहाँ मेरी कोड के कुछ एक के बीच अंतर करने बचाने के लिए और बाहर निकलने के है, जो एक तरह से चला जाता है, और बचाने के लिए और जारी रखने के लिए जो एक और जाना है:।

<%= hidden_field_tag 'step_commit', '' %> 
    <span style="float:left;"> 
    <%=submit_tag 'Cancel', :name=>'cancel', :onclick=>"javascript:location.href='/';return false;" %> 
    <%=submit_tag 'Save and Exit', :name=>'exit', :onclick=>"javascript:$('step_commit').value='exit';" %> 
    </span> 
    <span style="float:right;"> 
    <%=submit_tag 'Save and Continue', :name=>'continue', :onclick=>"javascript:$('step_commit').value='continue';" %> 
    </span> 
+0

अजीब बात यह है कि यह पुराने सर्वर पर ठीक काम कर रहा था, लेकिन हमने अभी इसे अभी ले जाया है और यह बंद हो गया है। –

1

जांचें कि आपका सबमिट इनपुट नामित है या इसका लेबल नहीं भेजा जाएगा।

जिसके परिणामस्वरूप एचटीएमएल होना चाहिए:

<input type="submit" name="commit" label="...> 
2

मैं इस एक ही समस्या में पड़ गए, और जवाब यहाँ मुझे सही दिशा में इशारा किया। हालांकि, छिपे हुए फॉर्म इनपुट जोड़ने या डबल सबमिट ब्लॉक को छोड़ने के सुझावों के बजाय, आप केवल 1 मिलीसेकंड के टाइमआउट के साथ अपने डबल सबमिट ब्लॉक पर एक सेटटाइमआउट फ़ंक्शन जोड़ सकते हैं, जो डबल सबमिट ब्लॉक को बिना रोक दिए काम करने की अनुमति देता है बटन जमा करना

+0

यही वह समाधान था जिसकी मुझे आवश्यकता थी। धन्यवाद! –

5

बस अपने फार्म के लिए name: "commit", value: "Save" जोड़ने सबमिट बटन:

form_for @object do |f| 
    ... 
    f.button :submit, "Save", name: "commit", value:"Save" 
end 

और फिर आप params[:commit] नियंत्रक में "Save" के बराबर होगा।

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