2017-06-20 66 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

相關問題