如何在单独的文件中查看此脚本?

时间:2015-04-28 06:48:17

标签: jquery ruby-on-rails

我有一个jquery脚本,每2秒运行一次ajax脚本

javascript:
  function getvalue(){
    $.ajax({
      url: "http://localhost:3000/companies/#{@company.url}",
      type: "GET",
      dataType: "json",
      success: function (json) {
      $('.blabla').html(json.clicks);
      $('.tratata').html(json.shows);
      }
    });
  }

javascript:
  $(document).ready(function(){
    getvalue();
    setInterval('getvalue()', 2000);
  });

当我尝试在资源中移动此脚本并通过javascript_include_tag给他打电话 - 然后它开始在整个应用程序中工作,而不仅仅是在我给他打电话的视图中。

如何解决?

UPD

我把这个脚本放到 app / assets / javascripts / foobar.js 中,然后打电话给他

  = javascript_include_tag 'foobar'

1 个答案:

答案 0 :(得分:0)

当rails生成app / assets / javascripts / application.js时,它会自动包含以下行:

//= require_tree .

告诉rails将此目录中的每个文件都包含在application.js中,默认情况下会在页面的头部调用。 foob​​ar.js文件中的这一行:

  $(document).ready(function(){
    getvalue();
    setInterval('getvalue()', 2000);
  });
每次加载DOM时,

都会告诉javascript运行此代码。这就是您的代码在每个页面上运行的原因。

为了防止这种情况,您有多个选项(请参阅this post了解一些想法),但最简单的方法是在DOM中查找仅在您希望它运行的页面上的元素,例如这样:

  $(document).ready(function(){
    if( $("#element-id-only-on-foobar-pages").is(":visable") ) {
        getvalue();
        setInterval('getvalue()', 2000);
    }
  });