2012-03-06 9 views
34

मैं रेल 3.2 का उपयोग कर रहा हूं, मेरे पास एक फॉर्म है और मैं इसे AJAX के माध्यम से पोस्ट करना चाहता हूं और नियंत्रक रिटर्न जेसन है।रेल 3 रिमोट फॉर्म: मैं सामग्री प्रकार कैसे निर्दिष्ट करूं?

मैं बहुत की तरह एक form_for सहायक उपयोग कर रहा हूँ:

= form_for(@object, :remote => true, :format => :json) do |f| 
.... 

मेरे वस्तुओं नियंत्रक बनाने के विधि इस प्रकार है:

def create 
    respond_to do |format| 
     if @object.save 
     format.html { redirect_to @object } 
     format.json { render json: @object, status: :created, location: @object } 
     else 
     format.html { render action: "new" } 
     format.json { render json: @object.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

रूप ajaxly प्रस्तुत करने अपेक्षा के अनुसार। लेकिन नियंत्रक एचटीएमएल लौट रहा है, जेसन नहीं!

फ़ायरबग के साथ अनुरोध का निरीक्षण करना और सुनिश्चित करें कि AJAX अनुरोध पर सामग्री-प्रकार http शीर्षलेख एप्लिकेशन/एचटीएमएल पर सेट किया जा रहा है।

इसके चारों ओर प्रलेखन बहुत दुर्लभ है: प्रारूप =>: जेसन सिर्फ ".json" को फॉर्म एक्शन में जोड़ना प्रतीत होता है, वास्तव में किसी भी http शीर्षलेख को संशोधित नहीं करता है।

मैंने यह भी कोशिश की है: content_type =>: json को कोई प्रभाव नहीं है।

मैं बस मुश्किल नहीं कोड नियंत्रक json वापस जाने के लिए कर सकते हैं के रूप में वहाँ अन्य स्थानों पर जहां मैं इसे वापस करने के लिए एचटीएमएल ...

तो किसी को पता है का उपयोग करते समय कैसे नियंत्रक json रेंडर करने के लिए बताने के लिए चाहते हैं कर रहे हैं form_for?

किसी भी मदद के लिए धन्यवाद

+0

क्या यूआरएल और विधि पृष्ठ पर अपने प्रपत्र टैग में गाया जाता है? – iltempo

+0

पोस्ट, पूरा टैग है:

Chris

+0

नहीं जेसन यहाँ। क्या आपने request.xhr का उपयोग करने पर विचार किया था? अनुरोधित प्रारूप के बजाय AJAX और सामान्य अनुरोधों के बीच अंतर करने के लिए? – iltempo

उत्तर

48

आप के साथ सामग्री प्रकार सेट कर सकते हैं: rails.js लाइन 106

+0

धन्यवाद! पता था कि मैं कुछ स्पष्ट याद कर रहा था! :) – Chris

+16

रेल 4 में आप 'प्रारूप:: json' (या ': format =>: json') का उपयोग कर सकते हैं' html => {:' data-type '=>' json '} ' –

+0

@JamesMcMahon रेल 3.2 में या तो। – RocketR

0

में वर्णित है रेल 5 के लिए

= form_for(@object, :remote => true, :html => {:'data-type' => 'json'})

, उचित तरीके से एक डेटा विशेषता निर्धारित करने में है data: { type: :json }

JQuery UJS docs

+1

पहले से मौजूद मौजूदा उत्तर पहले से मौजूद है इस जानकारी को और अधिक प्रदान करता है। कृपया वास्तव में प्रश्न या उत्तर में योगदान करने के लिए अतिरिक्त प्रयास करें। –

+0

यह थोड़ा भारी @ डेवीएम है।वह सिर्फ यूजेएस दस्तावेज़ों के लिंक के साथ मदद करने और वास्तव में मेरी मदद करने की कोशिश कर रहा था। – EasyCo

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