2012-09-12 19 views
24

मुझे जेसन प्रतिक्रिया भेजने की आवश्यकता है इनपुट में उपयोगकर्ता दर्ज डेटा पर निर्भर करता है, लेकिन मैं सरल जेसन अनुरोध भेजने में विफल रहा हूं।रेल में सरल जेसन प्रतिक्रिया कैसे भेजें?

मैंने इस आलेख का पालन किया - http://paydrotalks.com/posts/45-standard-json-response-for-rails-and-jquery

जोड़ा गया माइम प्रकार:

Mime::Type.register_alias "application/json", :jsonr, %w(text/x-json) 

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

:

def checkname 
    respond_to do |format| 
    format.jsonr do 
     render :json => { 
     :status => :ok, 
     :message => "Success!", 
     :html => "<b>congrats</b>" 
     }.to_json 
    end 
    end 
end 

लेकिन स्क्रीन खाली है और यहाँ Fiddler2 से प्रतिक्रिया कोड जब मैं इस कार्रवाई के जवाब पाने की रचना की है

HTTP/1.1 406 Not Acceptable 
    Content-Type: text/html; charset=utf-8 
    X-UA-Compatible: IE=Edge 
    Cache-Control: no-cache 
    X-Request-Id: 14a8467908d9ce322d054607efdacf92 
    X-Runtime: 0.011000 
    Content-Length: 1 
    Connection: keep-alive 
    Server: thin 1.4.1 codename Chromeo 

मैं क्या गलत कर रहा हूं?

+1

क्या आप वाकई mime_types.rb के संस्करण के बाद आपके ऐप को पुन: प्रारंभ कर रहे हैं? और सुनिश्चित करें कि आप अंत में '.jsonr' के साथ url के माध्यम से अपनी कार्रवाई तक पहुंच रहे हैं, जैसे:' http: // localhost: 3000/checkname.jsonr'। – jdoe

+0

@jdoe, हाँ। तुम सही हो। क्या आप यहां देख सकते हैं http://stackoverflow.com/questions/12382680/how-to-send-json-response-from-controller-to-jquery-and-inspect-it - यही कारण है कि मुझे जेसन अनुरोध भेजने की आवश्यकता है। – MID

+0

जहां मैं सही हूँ? :) क्या आपने समस्या हल की है या यह अभी भी मौजूद है? मैंने आपके कोड की कोशिश की और अपने ब्राउज़र को 'http: // localhost: 3000/checkname.jsonr' पर इंगित करने के लिए मुझे JSON प्रतिक्रिया (एप्लिकेशन/जेसन) दिया। – jdoe

उत्तर

32

कस्टम माइम के साथ काम कर के बारे में सुनिश्चित नहीं हैं, लेकिन JSON प्रतिपादन के लिए के रूप में, यह काम करना चाहिए:

def testme 
    respond_to do |format| 
    msg = { :status => "ok", :message => "Success!", :html => "<b>...</b>" } 
    format.json { render :json => msg } # don't do msg.to_json 
    end 
end 

इसके अलावा, आप रूबी का कौन सा संस्करण राज्य और उपयोग किए जा रहे रेल अगर यह मदद कर सकता है।

+4

मुझे नहीं पता क्यों, लेकिन आपका कोड मेरे लिए काम नहीं कर रहा है। मेरा संस्करण काम कर रहा है 'रेंडर: जेसन => { : स्थिति =>: ठीक है, : संदेश => "सफलता!", : एचटीएमएल => "... एचटीएमएल डालें ..." } ' – MID

+0

@ एमआईडी क्या आप अपने कंट्रोलर के शीर्ष पर 'answer_to: html,: json' शामिल हैं? – Chris

11

मैं आमतौर पर json डेटा लौटाने के लिए इस विधि का उपयोग:

msg = {:token => token, :courseId => courseId} 
render :json => msg 
+0

यह काफी आसान है! –

1

एक सरल तरीका है:

def my_action 

render :json => {:name => "any name"} 

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