Rails + AJAX返回的HTML多于预期

时间:2014-10-06 20:51:19

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

我是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中的内容。

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

1 个答案:

答案 0 :(得分:2)

您需要指定您不希望为此类型的ajax调用呈现布局,否则Rails会将其视为包含应用程序或模板布局的标准视图请求。要执行此操作,您只需将以下内容添加到Controller

中的render动作中
 render layout: false

这告诉Rails只处理html.erb文件而不使用为此Controller指定的应用程序布局或其他模板。