rails + jquery - 每个页面都有错误,但它仍然有效(有时)

Posted

技术标签:

【中文标题】rails + jquery - 每个页面都有错误,但它仍然有效(有时)【英文标题】:rails + jquery - errors on every page but it still works (sometimes) 【发布时间】:2017-06-20 00:39:16 【问题描述】:

我正在开发一个 Rails 应用程序。它是一个标准应用程序,使用服务器呈现的页面和 jquery。我很难将 jquery 拼凑在一起,我不知道为什么。

我将 jquery 用于几件事:datepicker 和 timepicker。这仅用于用户可以使用的表单,并在用户可以创建/编辑的部分呈现。

我的 javascript 的结构现在我正在使用 1 个名为 main 的 javascript 文件,这在我的 application.js 中是必需的。这就是我正在使用的所有 JS。

application.js

//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require bootstrap.min.js
//= require jquery.raty.min.js
//= require jquery.turbolinks
//= require chosen-jquery
//= require turbolinks
//= require main
//= require_tree .

ma​​in.js

$(document).ready(function() 

    // users profile stuff
    if ($('table.calendar tbody tr td ul').hasClass('active-trip')) 
    $('.active-trip').parent().css('background-color', 'orange');
  

  $("#trip_start_date").datepicker(
    minDate: 1
  );

  $("#start_date").datepicker(
    minDate: 1
  );
  $("#end_date").datepicker(
    minDate: 1
  );
  // ==========


  // js in user's trips
  $('#trip_start_time').timepicker();

  $('#trip_end_time').timepicker();
  // ===========

);

我遇到的问题是我使用的是引导导航栏,上面有一些 JS 效果(下拉菜单)。在这一页(称为“Gyms”或 /gyms 的资源)上,JS 完全中断并让导航栏无用。我得到的错误是

Uncaught TypeError: $(...).timepicker is not a function

我注意到,当我收到一次该错误时,它就会开始重复,并且我在每一页上都得到它。但是,当我返回到使用此代码的表单时,它完全可以正常工作即使出现错误

这可能是 turbolinks 问题,但我真的不确定。我正在使用这些宝石

gem 'jquery-rails'
gem 'jquery-ui-rails'
gem 'turbolinks'
gem 'jquery-turbolinks'

如果这有什么帮助的话。我也尝试过使用application.html.erb 中呈现的 jQuery CDN 脚本,但这似乎并没有真正帮助或伤害任何东西,而且几乎是中性的。任何帮助将不胜感激

【问题讨论】:

【参考方案1】:

尝试改变要求的顺序:

 //= require jquery
 //= require jquery.turbolinks
 //= require jquery_ujs
 //
 // ... your other scripts here ...
 //
 //= require turbolinks

将 jquery.tublinks 放在所有其他脚本之前,但在 jquery 之后

【讨论】:

感谢您的回答。将jquery.tubolinks 放在其他所有内容之上得到$ is not a function 错误,然后将jquery 放在jquery-turbolinks 之上修复了该错误,但仍然导致原始错误 你真的包含了timepicker js吗?我看不到你的问题 感谢您的建议,我不敢相信我忘记了!这消除了错误,但仍然是一个奇怪的“错误”,有时我可以点击我的导航栏下拉菜单,但其他时候我不能。没有错误,什么都没有。有些页面我不能点击它,有些页面我可以点击它。你知道为什么会这样吗? nvm 我认为这解决了那个烦人的错误:***.com/questions/11697789/…

以上是关于rails + jquery - 每个页面都有错误,但它仍然有效(有时)的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 JSON 和 jQuery 在 Rails 2.3.5 中显示服务器错误

在 Cucumber + Capybara + PhantomJS 在 Rails 中调试 jQuery Ajax

rails javascript jquery:通过页面部分时导航栏标题中的粗体效果

如何修复 JSON、jQuery、AJAX 和 PHP 之间的错误

Rails - Ajax 与不显眼的 javascript Jquery UI 进度条

在 Rails 4.1 中将页面特定的 jQuery 代码放在哪里?