2010-01-17 128 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