0

我在 app/assets/javascripts/expand.js 中写了这个函数

$( document ).ready(function() {
  var open = $('.toggle-expand'),
      a = $('ul').find('a');

  open.click(function(e){
      e.preventDefault();
      var $this = $(this),
          speed = 500;
      if($this.hasClass('active') === true) {
          $this.removeClass('active').next('.expandable').slideUp(speed);
      } else if(a.hasClass('active') === false) {
          $this.addClass('active').next('.expandable').slideDown(speed);
      } else {
          a.removeClass('active').next('.expandable').slideUp(speed);
          $this.addClass('active').next('.expandable').delay(speed).slideDown(speed);
      }
  });
});

该脚本在本地运行良好并按预期运行,但是当我部署到 Heroku 时,它完全停止工作。

作为参考,这里是脚本所作用的 HTML:

   <ul>
      <li>
         <a href="#" class="toggle-expand"><h2>text here</h2></a>
          <div class="expandable">
           ...more stuff here
          </div>
      </li>
      ...more li tags here
    </ul>

调试我已经完成:

通过将 development.rb 中的一行更改为config.assets.debug = false. 我对rails的了解还不够,无法从中获得任何见解。

我用RAILS_ENV=production bundle exec rake assets:precompile. 并把它推了上去。

在那之后没有工作我尝试再次预编译git rm -r public/assets/

当这不起作用时,我使用 chrome 或 firefox 上的开发人员工具来查看我的生产环境中加载的所有 uglified js。我看到我的函数似乎已经加载,但是我没有看到我期望的功能,所以我也不知道那里发生了什么。

要查看我看到的内容,您可以访问https://www.shopperbot.com/about并查看资源https://www.shopperbot.com/assets/application-db55113ff25f4decb133ccb74aa98298822de2381cddc0ae3fa8c03b65180dd0.js。这是一个巨大的文件,因此您需要搜索可扩展这个词。该词是所讨论的功能所独有的。

我对 Rails 还是很陌生,所以我不知道从这里去哪里。我可以尝试更改我的 js 的位置,但我认为这并不理想。有没有人有什么建议?

因为这一切在我的本地环境中都可以正常工作......我怀疑我犯了一些初学者的错误,可以用我还没有找到的一些神奇的 1 班轮来解决。

4

1 回答 1

1

正如 Jan Klimo 在评论中指出的那样,我已经删除了 google maps API 并且仍然有期望 API 存在的函数。这些错误导致我的脚本无法运行。

解决方案是删除对已删除 API 的所有引用。

于 2017-06-26T15:05:37.297 回答