【问题标题】:Showing spinner for Rails 3 UJS gets Type error显示 Rails 3 UJS 的微调器得到类型错误
【发布时间】:2011-10-31 04:19:07
【问题描述】:

我的 Rails 3 应用程序中有三个链接,它们使用 UJS 在它们下方的容器中加载信息。为了完成体验,我想在信息加载时显示一些“正在加载...”文本。所以我使用了一些来自 Simone Carletti 的 post 的 jQuery 来尝试完成它。但是,根据 jQuery,单击第一个链接时会发生两种不同的事情。 (在这两种情况下,单击其他两个时都不会发生任何事情。)

  • 鉴于下面的代码我得到TypeError: 'undefined' is not a function (evaluating '$("#tabs-1").js(data)')

为了解决这个问题,我将 jQuery 更改为 $("#tabs-1").html(data);。那么:

  • TypeError 消失
  • “正在加载...”不显示
  • 单击我的第一个链接会呈现各种未格式化的无关代码,例如:
    • $("#tabs-1").html(" \n 文字:\n \n 文本。
    • \n
\n

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


【解决方案1】:

我通过用在this question 中找到的 jQuery 替换我正在使用的 jQuery(上面)来让它工作。它比我使用的 jQuery简单得多

$(function() {
    $('#loading')
        .hide() // hide initially
        .ajaxStart(function(){
            $(this).show();
        })
        .ajaxStop(function(){
            $(this).hide();
        })
});

我还对上述问题中的代码进行了一些小改动以使其正常工作。特别是我在我的 css 中删除了:display:none,在我的控制器操作中删除了 format.html 和 format.xml。

【讨论】:

    【解决方案2】:

    您目前有三个具有相同 ID 的链接;这是无效的 HTML,会导致问题。

    不确定您在尝试使用 .js 的东西;我什至不认为这是一个 jQuery 方法。

    您可以使用 JS 或 HTML 来执行此操作,但我不建议两者都使用 -- 删除 xml 和 js respond_to,只保留 html。删除 JS erb 文件。

    在“ajax:success”绑定中,保持为.html(data)

    这应该是您需要做的所有事情,假设其他所有设置都正确。

    您使用的是哪个版本的 Rails?

    【讨论】:

    • 好吧,看来我没有正确设置所有内容。单击链接后,删除 respond_to format.js(和 js.erb 文件)不再呈现部分内容。
    • @tvalent2 控制台中有什么东西吗?什么版本的 Rails?我的测试也呈现了部分内容,尽管我 认为 这并不重要。而且你肯定在使用 jQuery(不是 Prototype)?
    • @tvalent Rake 路线显示您的期望?模板放对了吗?
    • @tvalent2 放到github上;我去看看——对我来说一切都很好。最好你回答我提出的所有问题,而不是只回答一两个问题,因为那样我必须再问一遍,这很无聊。
    猜你喜欢
    • 1970-01-01
    • 2019-09-29
    • 1970-01-01
    • 1970-01-01
    • 2018-01-02
    • 2011-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多