2013-11-25 5 views
30

पर मेरा उत्तर नियंत्रक "UserController" है जो http://localhost:3000/user/3 पर सामान्य और AJAX अनुरोधों का जवाब देना चाहिए।रेल: JSON और HTML

जब यह एक सामान्य अनुरोध है, तो मैं अपना विचार प्रस्तुत करना चाहता हूं। जब यह एक AJAX अनुरोध है, तो मैं JSON वापस करना चाहता हूं।

सही दृष्टिकोण respond_to do |format| ब्लॉक लगता है। जेएसओएन लिखना आसान है, लेकिन मैं इसे HTML के जवाब देने के लिए कैसे प्राप्त कर सकता हूं और बस सामान्य रूप से दृश्य प्रस्तुत कर सकता हूं?

def show 
    @user = User.find(params[:id]) 
    respond_to do |format| 
     format.html { 
     render :show ????this seems unnecessary. Can it be eliminated??? 
     } 
     format.json { 
     render json: @user 
     } 
    end 
    end 
+2

जब आप बिना किसी चीज़ के अपने एक्शन यूआरएल को कॉल करते हैं, उदा।/उपयोगकर्ता/3 यह एचटीएमएल वापस करेगा। अगर आप /users/3.json कहते हैं - यह जेसन वापस आ जाएगा –

उत्तर

63

मेरी जानकारी "शो प्रस्तुत करना" format.html में यह स्वचालित रूप से पूर्व के लिए एक संबंधित कार्रवाई दृश्य के लिए दिखेगा करने के लिए अपने आवश्यक नहीं के अनुसार करने के लिए बदल सकते हैं: शो एचटीएमएल अनुरोध और शो के लिए .html.erb, जेएस अनुरोध के लिए जेएस, erb।

तो यह

respond_to do |format| 

    format.html # show.html.erb 
    format.json { render json: @user } 

end 

भी काम करेंगे, आप जाँच कर सकते हैं अनुरोध request.xhr की जाँच करके ajax है या नहीं? अगर अनुरोध अजेक्स है तो यह सच हो जाता है।

13

हाँ, आप इसे

respond_to do |format| 
    format.html 
    format.json { render json: @user } 
end 
संबंधित मुद्दे