2012-11-01 21 views
6

संपादित करें - स्पष्ट रूप से किसी को भी कोई विचार नहीं है कि मुझे यहां क्या परेशान कर रहा है। मुझे लगता है कि यह कुछ ऐसा है जो मैंने पृष्ठ में कहीं और किया है जो स्थिति विशेषता को अवरुद्ध कर रहा है। समस्या यह है कि मैं कुछ भी नहीं देख सकता। मुझे उम्मीद है कि किसी ने कुछ ऐसा देखा है और सुझाव दे सकता है कि मुझे कहां देखना है।मैं नाम में 'स्थिति' के साथ फ़ॉर्म फ़ील्ड क्यों नहीं पोस्ट कर सकता हूं?


मेरे पास मेरे वेब-ऐप पर डेटा पोस्ट करने के लिए मेरे पृष्ठ पर एक डमी फॉर्म है। यह रेल (एचएएमएल का उपयोग करके) में बनाया गया है;

=form_tag bulk_invoice_path(''), method: 'put', class: 'mark-sent-form' do 
    =hidden_field_tag 'invoice[status]', 'Sent' 

यह निम्नलिखित एचटीएमएल उत्पन्न करता है;

<form accept-charset="UTF-8" action="/bulk_invoices/" class="mark-sent-form" method="post"> 
    <div style="margin:0;padding:0;display:inline"> 
    <input name="utf8" type="hidden" value="&#x2713;" /> 
    <input name="_method" type="hidden" value="put" /> 
    <input name="authenticity_token" type="hidden" value="OU8GtbHycR/EJ+H3GG9MN59xI59v47LSaFc2wYZloAs=" /> 
    </div> 
    <input id="invoice_status" name="invoice[status]" type="hidden" value="Sent" /> 
</form> 

डोम में, यह के रूप में

<form accept-charset="UTF-8" action="/bulk_invoices/" class="mark-sent-form" method="post"> 
    <div style="margin:0;padding:0;display:inline"> 
    <input name="utf8" type="hidden" value="✓"> 
    <input name="_method" type="hidden" value="put"> 
    <input name="authenticity_token" type="hidden" value="OU8GtbHycR/EJ+H3GG9MN59xI59v47LSaFc2wYZloAs="> 
    </div> 
    <input id="invoice_status" name="invoice[status]" type="hidden" value="Sent"> 
</form> 

इस प्रकार यह फार्म jQuery (का उपयोग कर coffeescript) इसलिए की तरह साथ पोस्ट किया जाता है प्रकट होता है;

jQuery -> 
    $('a.mark-sent').click -> updateBulkInvoices('.mark-sent-form') 

updateBulkInvoices = (form) -> 
    $(form).attr('action', "/bulk_invoices/#{checkedInvoices().get().join()}").submit() 

इस पैटर्न ने मुझे अन्य कार्यों के साथ अच्छी तरह से सेवा दी है लेकिन 'चालान [स्थिति]' समस्याएं पैदा कर रहा है। जब फॉर्म jQuery के साथ सबमिट किया जाता है तो छुपा क्षेत्र पारित नहीं होता है। मैं अपने रेल कंसोल में निम्नलिखित देखता हूं;

Parameters: {"utf8"=>"✓", "authenticity_token"=>"+qW9kIih5l2j69w1LK2YfQ9mYQ7nKPDm5XgLZuKB4ic=", "id"=>"16"} 

यानी चालान [स्थिति] फ़ील्ड फॉर्म पैरामीटर के साथ पारित नहीं किया जा रहा है। अगर मैं इस क्षेत्र का नाम किसी और चीज़ में बदलता हूं तो यह ठीक काम करता है, उदा।

=form_tag bulk_invoice_path(''), method: 'put', class: 'mark-sent-form' do 
    =hidden_field_tag 'invoice[flatus]', 'sent' 

मुझे मेरे कंसोल में निम्न पैरामीटर देता है;

Parameters: {"utf8"=>"✓", "authenticity_token"=>"+qW9kIih5l2j69w1LK2YfQ9mYQ7nKPDm5XgLZuKB4ic=", "invoice"=>{"flatus"=>"sent"}, "id"=>"16"} 

मैं एक ही बात हो रहा है, तो मैं Chrome के डेवलपर उपकरण पर 'नेटवर्क' टैब पर नजर रखने के तो मैं यह एक रेल बात है नहीं लगता कि देखते हैं, यह एक ब्राउज़र समस्या हो रहा है। मुझे सफारी और फ़ायरफ़ॉक्स के साथ भी वही चीज़ मिलती है।

क्या ब्राउज़र के रूप में कुछ प्रकार का जादुई आरक्षित शब्द है? यहाँ क्या चल रहा है?

+0

कोई ऐसा आरक्षित शब्द नहीं है जिसने मैंने कोशिश की और इसके कामकाजी ठीक –

+0

ठीक है, यह मेरे लिए काम नहीं कर रहा है। – brad

+0

क्या आप जेनरेट किए गए HTML फॉर्म पोस्ट कर सकते हैं? –

उत्तर

3

मैं समस्या को पुन: उत्पन्न करने में सक्षम नहीं हूं, लेकिन मुझे संदेह है कि यह फ़ॉर्म सबमिट करते समय जावास्क्रिप्ट के कारण होता है।

  1. ओपन पेज क्रोम
  2. में राइट सबमिट बटन पर क्लिक करें, चुनें 'का निरीक्षण तत्व'
  3. 'सूत्रों' टैब का चयन: इस डिबग करने के लिए, आप निम्न कर सकते हैं।
  4. स्रोत टैब में, जब आप सबमिट पर क्लिक करते हैं तो जावास्क्रिप्ट को कहा जाता है। आपको शायद 'तत्व' टैब के नीचे बॉक्स में किशोरी दायां तीर पर क्लिक करना होगा। इसके अलावा, अगर कोड को सभी लाइन ब्रेक से हटा दिया गया है, तो आप पृष्ठ के नीचे 'सुंदर प्रिंट' घुंघराले ब्रेसिज़ आइकन पर क्लिक कर सकते हैं।
  5. एक बार जब आपको विधि मिल जाए, तो पर इसके आगे की लाइन संख्या पर क्लिक करें। दाएं फलक में आपको इसे "ब्रेकपॉइंट्स" अनुभाग के अंतर्गत दिखाई देना चाहिए।
  6. पृष्ठ को पुनः लोड करें
  7. सबमिट बटन पर क्लिक करें।

यह आपको सबमिट कार्रवाई पर रोक दिए गए जावास्क्रिप्ट डीबगर में लाएगा और फिर आप कोड के माध्यम से कदम उठा सकते हैं और देख सकते हैं कि यह क्या कर रहा है।

मुझे आशा है कि इससे मदद मिलती है!

+0

बहुत बढ़िया, धन्यवाद। इससे मुझे अंततः मेरे कोड के माध्यम से ठीक से कदम उठाने के लिए प्रेरित किया गया और मैंने उसी नाम के साथ एक फ़ंक्शन खोजा जिसे मैं बुला रहा था। मैंने इसे पहले लिखा था, इसे बदल दिया, इसे हटाया नहीं और इसके बारे में भूल गया। वैसे भी, यह मेरे फार्म के लिए ठीक से जमा नहीं किया गया अपराधी था। इस परियोजना में मैंने पहले कभी लिखा है की तुलना में अधिक जावास्क्रिप्ट है और मैं ट्रैक खोना शुरू कर रहा हूं। मुझे लगता है कि मुझे जावास्क्रिप्ट wrangling पर कुछ सुझावों की जरूरत है! – brad