Rails ajax请求只加载视图html

Bri*_*asa 6 ajax jquery ruby-on-rails

我正在尝试使用rails和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
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助.

小智 8

您必须将js格式添加到respond_to块:

format.js do
  render :update do |page|
    page.replace_html "id_of_your_div" :partial => "something"
  end
end
Run Code Online (Sandbox Code Playgroud)

要么

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

甚至你可以将javascript代码放在一个名为new.js.erb的文件中,而不需要format.js块.

我建议你阅读rails指南:http://guides.rubyonrails.org/layouts_and_rendering.html#using-render-with-update


Jai*_*yer 7

将此行添加到您的respond_to块:

format.js { render :layout => false }
Run Code Online (Sandbox Code Playgroud)

这表示对于javascript请求,不要渲染布局.现在它应该适用于ajax请求和常规Web链接.