2017-06-20 70 views
0

我正在尝试为我的rails应用程序实现所选插件和日期选择器,并在第二次访问页面时出现问题(不是页面重新加载,重新加载页面实际上刷新了插件并将它们带回),插件即会出现,然后很快消失,就好像它们正在重置一样。第二次访问页面时未应用Rails css/js

我试过寻找这个问题,但我没有真正看到任何东西在轨道上,我认为它与脚本的服务方式和bootstrap的CSS/js文件有关,但我并不确定并不能指出它。

我也在我的页面加载中获得[缓存未命中],如果这有所作为。

事情我已经尝试:

  • 开关的我需要在这两个的application.js和application.css
  • 移动jQuery来直接初始化插件的_form.erb的顺序。 html页面
  • 移动的jQuery成的application.js
  • 一个的document.ready去除所述的document.ready(使用document.bind)
  • 使用中的document.ready一个的setTimeout作为速战速决集T下摆回来后,他们得到“复位”(这里没有骰子)
  • 删除的部分时,我怀疑部分的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> 
+0

您的浏览器控制台有任何错误吗? –

+0

我偶尔会得到一个“无法读取与Object.parseDate相关的未定义属性'split'”的日期选择器,但它似乎没有任何效果。试图删除datepicker的需求,问题仍然存在与选择。还记得我已经尝试过rake资产:clobber和rake资产:预编译没有成功。 – nab1994

回答

0

我觉得turbolinks做到这一点。您可以通过在application.js文件中删除//= require turbolinks行来确认,然后重新启动您的应用程序。 如果您确实需要在您的应用程序中使用turbolink,请查看下面的链接来解决此问题。

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

希望它能帮助。

+1

谢谢!这是有道理的。我将$(document).ready转换为$(document).on('turbolinks:load')并且它工作得很完美。 – nab1994

相关问题