【问题标题】:Rails css/js not being applied when visiting page for second time第二次访问页面时未应用Rails css / js
【发布时间】:2017-06-20 23:22:28
【问题描述】:

我正在尝试为我的 rails 应用程序实现选择的插件和日期选择器,并且在第二个页面访问时遇到问题(不是页面重新加载,重新加载页面实际上会刷新插件并将它们带回来),插件出现然后消失的非常快,几乎就像它们正在重置一样。

我已经尝试搜索此问题,但我并没有真正看到任何关于 rails 的内容,我认为这与脚本的服务方式和引导程序的 css/js 文件有关,但我不太确定并且无法确定。

我的页面加载时也会出现 [缓存未命中],如果这有影响的话。

我尝试过的事情:

  • 在 application.js 和 application.css 中切换我的需求顺序
  • 移动jQuery初始化插件直接到_form.erb.html页面
  • 将 jQuery 移动到 application.js 中的 document.ready 中
  • 删除上述 document.ready(并使用 document.bind)
  • 在 document.ready 中使用 setTimeout 作为快速修复,以便在它们“重置”后将它们重新设置(这里没有骰子)
  • 当我怀疑部分的 js 出于某种奇怪的原因(不是这种情况)覆盖 .chosen 和 .datepicker 时删除部分

这是一些代码,我觉得这是我想念的愚蠢和简单的东西。

//= require rails-ujs
//= require turbolinks
//= require jquery.min
//= require jquery_ujs
//= require jquery-ui
//= require_tree .
//= require chosen.jquery.min
//= require bootstrap-datepicker

$(document).ready(function(){

    $('.chosen').chosen(
        {   
            allow_single_deselect: true,
            no_results_text: 'No results matched',
            width: '200px'
        }
    );

    $('.datepicker').datepicker();


});

和application.css

 /*
 *= require_tree .
 *= require_self
 *= require chosen.min
 *= require datepicker
 */

有问题的 _form.html.erb

  <div class="field">
    <%= form.label :customer_id %>
    <%# form.text_field :customer_id, id: :order_customer_id %>
    <%= collection_select( :order, :customer_id, @customers, :id, :name,{selected: order.customer_id, prompt: false}, { class: 'chosen' }) %>
  </div>

  <div class="field">
    <%= form.label :date %>
    <%# form.date_select :date, id: :order_date, class: 'datepicker' %>
    <%= form.text_field :date, default: 'Pick a date', class: 'datepicker' %>
  </div>

【问题讨论】:

  • 您的浏览器控制台有错误吗?
  • 我偶尔会收到与日期选择器相关的“无法读取 Object.parseDate 处未定义的属性'split'”,但它似乎没有任何效果。尝试删除日期选择器的要求,但问题仍然存在选择。还记得我已经尝试过 rake assets:clobber 和 rake assets:precompile 没有成功。

标签: jquery css ruby-on-rails jquery-chosen


【解决方案1】:

我认为 turbolinks 成功了。您可以通过删除application.js 文件中的//= require turbolinks 行并重新启动您的应用程序来确认这一点。 如果您的应用程序中确实需要 turbolinks,请查看下面的链接来解决此问题。

Rails 4: how to use $(document).ready() with turbo-links

希望对你有帮助。

【讨论】:

  • 谢谢!就是这样,而且是有道理的。我将 $(document).ready 切换到 $(document).on('turbolinks:load') 并且效果很好。
猜你喜欢
  • 2012-10-24
  • 2023-03-09
  • 2010-11-26
  • 1970-01-01
  • 2012-06-06
  • 1970-01-01
  • 2014-10-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多