2012-07-02 16 views
12

के दौरान लेआउट को रोकता है मैंने इस खोज के मैकेनिक के लिए समाधान ढूंढने में सक्षम नहीं पाया है। मैं आम तौर पर रेल में सभी पृष्ठों को लोड करना चाहता हूं, लेकिन जब भी मैं AJAX अनुरोध करता हूं तो मैं लेआउट के बिना पेज को वापस करना चाहता हूं। तो जब भी मैं एक AJAX बना देता हूं तो मैं ?page=true या उन पंक्तियों के साथ कुछ जोड़ सकता हूं और रेलवे लेआउट के बिना पृष्ठ को वापस कर सकता है।रेल AJAX अनुरोध

क्या यह संभव है? क्या ऐसा करने का कोई बेहतर तरीका है कि मुझे याद आ रही है?

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

अंतिम समाधान कार्य कोड:

नियंत्रक में आप सभी की respond_to ब्लॉक में format.html एक छोटे से तर्क संलग्न करने की जरूरत है।

उदाहरण

def show 
    # code beforehand 

    respond_to do |format| 
     format.html { render :layout => !request.xhr? } 
     # other formats 
    end 
end 

के लिए

show विधि में और बस हो गया! AJAX अनुरोधों के दौरान लेआउट रोकें!

नोट: उनके जवाब पर उदासीनता की टिप्पणी के लिए धन्यवाद यह आगे सरलीकृत किया गया था। मैं मूल रूप से format.html { render :layout => nil if request.xhr? } था यह समाधान बस काम करता है, लेकिन smathy के संशोधन इसे और भी आसान रखता है।

+0

क्या प्रत्येक AJAX अनुरोध के लिए एप्लिकेशन नियंत्रक में ऐसा करना संभव है? –

+0

संभावित डुप्लिकेट [xhrs के जवाब में कभी भी लेआउट प्रस्तुत न करें] (http://stackoverflow.com/questions/2444866/never-render-a-layout-in-response-to-xhrs) – fivedigit

उत्तर

8

आपको उस पैरामीटर को जोड़ने की आवश्यकता नहीं है, request.xhr? अजाक्स अनुरोध होने पर आपके नियंत्रक में सत्य वापस आ जाएगा। यह तय करने के लिए कि लेआउट प्रस्तुत करना है या नहीं, बस इसका उपयोग करें।

+0

यह कैसे काम करेगा? मैंने अनुरोध किया तो 'request.xhr? प्रस्तुत करें: शो नियंत्रक में लेआउट => शून्य अंत'। यह एक त्रुटि लौट रहा है। या तो मैं request.xhr का उपयोग नहीं कर रहा हूँ? सही ढंग से या मैं लेआउट को गलत तरीके से हटाने की कोशिश कर रहा हूं। – KayoticSully

+1

मैं इसे समझने में सक्षम था, आपको जानकारी के लिए धन्यवाद। मैं अपने वास्तविक अंतिम कार्यकारी कोड के साथ प्रश्न संपादित करूंगा। आपकी जानकारी के लिए धन्यवाद, मेरा समाधान बहुत "रेल की तरह" है और मैं इसके साथ बेहद खुश हूं! – KayoticSully

+3

अच्छा समाधान, हाँ। एक विकल्प बूलियन का उपयोग करना है - लेकिन अस्वीकार कर दिया गया है। उदाहरण के लिए। मैं करूँगा: 'प्रस्तुत करें: लेआउट =>! Request.xhr? ' – smathy