【问题标题】:Rails ajax request load view html onlyRails ajax 请求仅加载视图 html
【发布时间】:2010-01-17 19:00:04
【问题描述】:

我正在尝试使用 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

感谢您的帮助。

【问题讨论】:

    标签: jquery ruby-on-rails ajax


    【解决方案1】:

    您必须将 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
    

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

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

    【讨论】:

    • 谢谢!这是问题和我需要的正确答案。
    • 第一个示例中:partial 之前缺少一个昏迷
    【解决方案2】:

    将此行添加到您的 respond_to 块中:

    format.js { render :layout => false }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-03
      • 1970-01-01
      • 2013-03-22
      相关资源
      最近更新 更多