Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 访问根目录链接时如何隐藏AJAX加载图像_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 访问根目录链接时如何隐藏AJAX加载图像

Ruby on rails 访问根目录链接时如何隐藏AJAX加载图像,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我的应用程序中有一些AJAX加载,我想有一个加载图标会很好,因为有一点延迟。我从我的电脑上抓到了一些代码。加载和隐藏工作正常,只是我在标题中有一个徽标,它是指向根的链接: <%= link_to "#{app_name}", root_url, id: "logo" %> })) 我甚至尝试在徽标上添加一个onclick。首先触发,然后加载页面,并显示微调器。有什么问题吗?特里,这是对你有帮助的评论的补充 有几件事需要解决: 您应该隐藏CSS,使用JQuery使其可见 您当前正在

我的应用程序中有一些AJAX加载,我想有一个加载图标会很好,因为有一点延迟。我从我的电脑上抓到了一些代码。加载和隐藏工作正常,只是我在标题中有一个徽标,它是指向根的链接:

<%= link_to "#{app_name}", root_url, id: "logo" %>
}))


我甚至尝试在徽标上添加一个onclick。首先触发,然后加载页面,并显示微调器。有什么问题吗?

特里,这是对你有帮助的评论的补充

有几件事需要解决:


  • 您应该隐藏CSS,使用JQuery使其可见
  • 您当前正在使用JQuery在DOM加载上隐藏
    微调器

    虽然这会起作用,但会给应用程序增加不必要的开销。相反,当Ajax运行时,最好显示
    微调器

    #app/assets/stylesheets/application.css
    .spinner {
       display: none; /* Use this instead of inline styles */
    }
    

  • 您应该将微调器绑定到页面上的元素
  • 您当前正在将
    微调器
    绑定到
    ajaxStart
    ajaxStop
    。这些是全局函数,每次Ajax运行时都会触发

    这可能适用于简单的应用程序,但在更复杂的系统中是不好的做法

    我会这样做:

    #app/assets/javascripts/application.js
    spinner = function(){
       $(".spinner").toggle();
    }
    
    $(document).on("ajax:beforeSend", function(){
       spinner();
    }).on("ajax:complete", function(){
       spinner();
    });
    
    $(document).on("click", ".element", function(){
        spinner();
        $.ajax({
          ...
    });
    
    这将使用Rails UJS中的事件处理程序(每次调用
    remote:true
    ,这将触发)


    它还允许您对应用程序中的任何其他事件/元素使用
    微调器功能。

    Terry,这是对您有所帮助的注释的附带说明

    有几件事需要解决:


  • 您应该隐藏CSS,使用JQuery使其可见
  • 您当前正在使用JQuery在DOM加载上隐藏
    微调器

    虽然这会起作用,但会给应用程序增加不必要的开销。相反,当Ajax运行时,最好显示
    微调器

    #app/assets/stylesheets/application.css
    .spinner {
       display: none; /* Use this instead of inline styles */
    }
    

  • 您应该将微调器绑定到页面上的元素
  • 您当前正在将
    微调器
    绑定到
    ajaxStart
    ajaxStop
    。这些是全局函数,每次Ajax运行时都会触发

    这可能适用于简单的应用程序,但在更复杂的系统中是不好的做法

    我会这样做:

    #app/assets/javascripts/application.js
    spinner = function(){
       $(".spinner").toggle();
    }
    
    $(document).on("ajax:beforeSend", function(){
       spinner();
    }).on("ajax:complete", function(){
       spinner();
    });
    
    $(document).on("click", ".element", function(){
        spinner();
        $.ajax({
          ...
    });
    
    这将使用Rails UJS中的事件处理程序(每次调用
    remote:true
    ,这将触发)


    它还允许您对应用程序中的任何其他事件/元素使用
    微调器
    功能。

    如何使用:
    并删除:
    //隐藏微调器$(“.spinner”).hide()
    不要用javascript初始化它来隐藏元素,而要用css来隐藏它。你能告诉我现在发生了什么吗?你使用涡轮链接吗?谢谢!这就是诀窍。我只是不熟悉jQuery。首先,我必须修改微调器CSS以设置display:none,而不是display:inline块。正如您所建议的,我注释掉了隐藏函数。为了显示它,我没有使用show,而是使用了$(“.spinner”).css(“display”,“inline block”);很好的发现,我已经把这个书签了,谢谢!如何使用:
    并删除:
    //隐藏微调器$(“.spinner”).hide()
    不要用javascript初始化它来隐藏元素,而要用css来隐藏它。你能告诉我现在发生了什么吗?你使用涡轮链接吗?谢谢!这就是诀窍。我只是不熟悉jQuery。首先,我必须修改微调器CSS以设置display:none,而不是display:inline块。正如您所建议的,我注释掉了隐藏函数。为了显示它,我没有使用show,而是使用了$(“.spinner”).css(“display”,“inline block”);很好的发现,我已经把这个书签了,谢谢!