2010-01-17 18 views
6

मैं रेल और jQuery का उपयोग कर AJAX सक्षम वेब पेज बनाने की कोशिश कर रहा हूं। जिस समस्या में मैं चल रहा हूं वह यह है कि जब मैं jQuery की AJAX विधि का उपयोग करके एक div में एक दृश्य को देखने और लोड करने का प्रयास करता हूं तो मुझे अपना एप्लिकेशन लेआउट दृश्य के साथ वापस आ रहा है। क्या यह दृश्य डेटा पुनर्प्राप्त करने का कोई तरीका है यदि यह AJAX अनुरोध है, लेकिन मेरा एप्लिकेशन लेआउट भी लोड करें, अगर यह AJAX अनुरोध नहीं है?रेल एजेक्स अनुरोध लोड एचटीएमएल केवल

def new 
    @blog = Blog.new 

    respond_to do |format| 
     format.html # Goes to the new.html.erb view. 
     format.xml { render :xml => @blog } 
    end 
end 

मदद के लिए धन्यवाद:

यहाँ नियंत्रकों विधि है कि मैं बोल रहा हूँ है।

उत्तर

7

अपने respond_to ब्लॉक करने के लिए इस लाइन में जोड़ें:

format.js { render :layout => false } 

यह कहना है कि जावास्क्रिप्ट अनुरोधों के लिए, लेआउट प्रस्तुत करना नहीं है। अब यह AJAX अनुरोधों और नियमित वेब लिंक दोनों के लिए काम करना चाहिए।

format.js do 
    render :update do |page| 
    page.replace_html "id_of_your_div" :partial => "something" 
    end 
end 

या

format.js do 
    render :js => "$('#id_of_your_div').html('#{escape_javascript(render_to_string(:partial => 'something')}');" 
end 

या यहां तक ​​कि आप बिना new.js.erb नामक एक फ़ाइल में जावास्क्रिप्ट कोड डाल सकता है:

8

आप अपने respond_to ब्लॉक करने के लिए जे एस प्रारूप जोड़ने के लिए format.js ब्लॉक की आवश्यकता है।

मैं आपको रेल गाइड पढ़ने के लिए अनुशंसा करता हूं: http://guides.rubyonrails.org/layouts_and_rendering.html#using-render-with-update

+0

धन्यवाद! यह सवाल का उचित जवाब है और मुझे क्या चाहिए। – Mosselman

+0

आप पहले उदाहरण में 'आंशिक' से पहले कोमा खो रहे हैं – Sbbs

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