2012-06-15 14 views
10

मुझे एक रीढ़ की हड्डी का मॉडल मिला है जिसे मैं नष्ट करने की कोशिश कर रहा हूं, लेकिन अनुरोध के साथ कोई पैराम नहीं भेजा जा रहा है, इसलिए सर्वर '404 नहीं मिला' त्रुटि लौटा रहा है।रीढ़ की हड्डी पैरामीटर नहीं भेजती

मैं स्वीकार करूंगा कि मेरी संरचना थोड़ा अजीब है क्योंकि मैं वस्तुओं को बना रहा/नष्ट कर रहा हूं, अगर वे पहले से ही सूची में हैं या नहीं।

 
var list_item = new MyApp.Models.ListItem({item_id: this.model.id, group_id: this.model.group_id}); 

    if($(e.currentTarget).hasClass('add')){ 

      list_item.save(list_item, { 
       success: function(response){ 
        this.model.attributes.addedtolist_id = response.id 
        console.log(this.model); 
       }, 
       error: function(){ 
        alert('could not save item'); 
       } 
      }); 
    } else if($(e.currentTarget).hasClass('remove')) { 
     list_item.id=this.model.addedtolist_id; 
     list_item.attributes.id = this.model.addedtolist_id; 
     console.log(list_item); 
     list_item.destroy({ 
      success: function(){ 
       alert('delete'); 
      }, 
      error: function(){ 
       alert('could not uncheck'); 
      } 
    }); 
} 

list_item के लिए सांत्वना उत्पादन से पहले नष्ट

 
_escapedAttributes: Object 
_previousAttributes: Object 
_setting: false 
attributes: Object 
id: 2 
item_id: 66 
group_id: 64 
__proto__: Object 
cid: "c23" 
id: 2 
__proto__: q 

है लेकिन जब मैं हटाने के अनुरोध के साथ भेजा हेडर को देखो, मैं किसी भी पैरामीटर भेजा जा रहा है नहीं है।

----------------------- अपडेट पैराम भेजा जा रहा है, 404 अभी भी वापस आ रहा है --------------

यारोस्लाव की सिफारिश के अनुसार, मैंने नष्ट विधि में 'हेडर' जोड़ा है, लेकिन मेरे रेल नियंत्रक अभी भी DELETE 404 not found त्रुटि लौट रहे हैं। मैं सिर्फ यह सुनिश्चित करने के लिए सूचीकरण वापस करने की कोशिश कर रहा हूं कि मैं इसे नष्ट करने से पहले सही प्राप्त कर रहा हूं।

मेरे नियंत्रक

 
def destroy 
    listitem = Listitem.find(params[:id]) 
    return render :json => listitem 
end 
+0

@muistooshort मैं स्वरूपण अद्यतन और लापता ब्रेस जोड़ दिया है। उम्मीद है कि यह बेहतर है। – pedalpete

+0

इसे अपनी आईडी आईडी कहां मिलती है? मैं इसे 'नई सूची' में नहीं देखता हूं। और यूआरएलईईई अनुरोध के लिए यूआरएल कैसा दिखता है? –

+0

इसमें 'new ListItem' में कोई आईडी नहीं है क्योंकि वह तब होता है जब listitem बनाया जा रहा है, इसलिए इसमें अभी तक कोई आईडी नहीं है। यही कारण है कि मैं 'नष्ट' से पहले आईडी बना देता हूं। यूआरएल 'DELETE http ://10.1.1.7:3000/list_items 404 (नहीं मिला)' है। मैं इंडेक्स के लिए एक ही यूआरएल का उपयोग करता हूं और विधियां बनाता हूं, जो कोई समस्या नहीं करते हैं। – pedalpete

उत्तर

29

मुझे लगता है कि होता है कि आप एक स्ट्रिंग के लिए मॉडल में url स्थापित कर रहे हैं:

Backbone.Model.extend({ 
    url: '/list_items', 
    //... 
}); 

यह बैकबोन को सभी क्रियाओं के लिए यूआरएल के रूप में बिल्कुल /list_items का उपयोग करने के लिए बताएगा। आप एक समारोह का उपयोग करना चाहिए:

url: function() { return '/list_items/' + encodeURIComponent(this.id) } 

या urlRoot के साथ एक स्ट्रिंग का उपयोग और डिफ़ॉल्ट url समारोह id जोड़ें:

urlRoot: '/list_items' 
+0

हाँ - यह मेरे लिए urlRoot बात थी! – Stumblor

0
list_item.destroy(**l** { 
    success: function(){ 
    alert('delete'); 
}, ...); 

है कि अतिरिक्त नंबर एक समस्या है?

+0

oopps, क्षमा करें @ जेकी, जब यह काम नहीं कर रहा था, मैंने 'list_item.destroy (list_item, {success सफलता ... 'की कोशिश की और दुर्घटना से वहां एल को छोड़ दिया। यह मुद्दा नहीं है, यह एक प्रयास था ठीक है। – pedalpete

2

आप किस पैराम को भेजने की उम्मीद कर रहे हैं? नष्ट करें शरीर के बिना यूआरएल या डिफ़ॉल्ट रूप से अतिरिक्त हेडर के द्वारा केवल एक http हटा अनुरोध करता है। पैरामीटर तर्क jQuery ajax कार्य करने के लिए पारित किया गया है, तो आप शीर्ष लेख वहाँ निर्दिष्ट कर सकते हैं:

model.destroy({ 
... 
    headers : { 
     your_header : 123 
    } 
}) 
+0

धन्यवाद @ यरोस्लाव, मैं आईडी को एक परम के रूप में भेजने की उम्मीद कर रहा था। मैंने आपके 'हेडर' जोड़े हैं, जो अब आईडी को एक param के रूप में भेज रहा है, लेकिन मुझे अभी भी 'DELETE' नहीं मिला है – pedalpete

+0

मैं इन पैरामीटर सर्वर साइड (रेल) को नहीं देख सका। मुझे बैकबो नष्ट करने के विकल्प पैरामीटर पर अधिक दस्तावेज नहीं मिल रहा है। क्या आप लिंक जोड़ सकते हैं? धन्यवाद! – oma

+0

दुर्भाग्य से दस्तावेज में वर्णित नहीं है, जिसमें पता चला है स्रोत कोड – Yaroslav

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