2010-01-17 129 views
6

我想使用rails和jQuery使AJAX啓用的網頁。我遇到的問題是,當我嘗試使用jQuery的AJAX方法將視圖加載到div中時,我得到的是與視圖一起返回的應用程序佈局。有沒有辦法只檢索視圖數據,如果它是一個AJAX請求,但加載我的應用程序佈局,以及如果它不是一個AJAX請求?Rails ajax請求加載視圖僅html

這裏的控制器方法我打電話:

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 } 

這就是說JavaScript的請求,不會使佈局。現在它應該適用於Ajax請求和常規的Web鏈接。

8

你必須將JS格式添加到您的respond_to代碼塊:

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沒有該文件的javascript代碼需要format.js塊。

我建議您閱讀導軌指南:http://guides.rubyonrails.org/layouts_and_rendering.html#using-render-with-update

+0

謝謝!這是對這個問題和我所需要的正確答案。 – Mosselman 2011-10-18 21:04:00

+0

您在第一個示例中的':partial'之前缺少昏迷 – Sbbs 2014-07-04 23:25:28