我是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 < / em>超过预期。它实际上包含整个HTML DOM树,从<DOCTYPE>
到</html>
以及/search/login.html.erb中的内容。
有人可以帮我理解为什么会这样吗?
答案 0 :(得分:2)
您需要指定您不希望为此类型的ajax调用呈现布局,否则Rails会将其视为包含应用程序或模板布局的标准视图请求。要执行此操作,您只需将以下内容添加到Controller
中的render动作中 render layout: false
这告诉Rails只处理html.erb文件而不使用为此Controller指定的应用程序布局或其他模板。