我是 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 多了很多比预期的。它实际上包含整个 HTML DOM 树,从 <DOCTYPE>
至</html>
除了/search/login.html.erb 中的内容。
有人可以帮我理解为什么会发生这种情况吗?
最佳答案
您需要指定您不想渲染此类 Ajax 调用的布局,否则 Rails 会将其视为包含应用程序或模板布局的标准 View 请求。为此,您只需将以下内容添加到 Controller 中的渲染操作
render layout: false
这告诉 Rails 仅处理 html.erb 文件,而不需要为此 Controller 指定应用程序布局或其他模板。
关于javascript - Rails + AJAX 返回的 HTML 多于预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26224668/