【问题标题】:Rails + AJAX is returning more HTML than expectedRails + AJAX 返回的 HTML 超出预期
【发布时间】:2014-12-01 05:03:35
【问题描述】:

我是 Rails 新手,感谢任何见解!更新 Rails 或 Ruby 的版本不是一种选择,我需要使用我客户的当前版本。

Ruby 版本:1.9.3-p194,Rails 版本:3.2.18

我正在通过 JavaScript/jQuery Ajax 调用加载动态 HTML 内容。当我从 app/assets/javascripts/application.js 内部进行 Ajax 调用时,一切正常。这是电话:

$.ajax({
        url: '/search/login',
        cache: true,
        success: function(html){
            console.log('SUCCESS: ', html);
        }
    });

名为 html 的响应变量包含 /search/login.html.erb 中的所有 HTML

但是,如果我将确切的调用移至另一个 JavaScript 文件,例如 app/assets/javascripts/search/jh.js,一切似乎都可以正常工作,除了返回的 HTML 是 LOT 更多超出预期。它实际上包含整个 HTML DOM 树,从 <DOCTYPE></html> 以及来自 /search/login.html.erb 的内容。

有人可以帮我理解为什么会这样吗?

【问题讨论】:

  • 您是否在控制器的渲染语句中尝试过layout: false?看起来更像是控制器问题而不是 jQuery 问题。
  • 您能否从搜索控制器中发布这两种方法的代码:loginjh
  • @engineersmnky 你成功了!太感谢了。如果您留下您的评论作为答案,我会选择它。再次感谢!

标签: javascript jquery ruby-on-rails ruby ajax


【解决方案1】:

您需要指定您不想为这种类型的 ajax 调用呈现布局,否则 Rails 会将其视为标准视图请求,包括应用程序或模板布局。为此,您只需在 Controller 中的渲染操作中添加以下内容

 render layout: false

这告诉 Rails 只处理 html.erb 文件,而不需要为此控制器指定的应用程序布局或其他模板。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-17
    • 2016-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多