2015-05-22 70 views
0

我是Rails的新手,我遇到一個問題,我需要在ERB文件中添加一些Javascript。例如,Rails ERB包含Javascript

<script> 
    function init() { 
     .... 
    } 
</script> 

<% @list.each do |l| %> 
    .... 
<% end %> 

在模板中,我有另外一個腳本來檢查功能「的init()」是存在,它的頁面加載完成後,將執行。

當我在測試服務器上嘗試它時,init()不能執行。我從網絡瀏覽器檢查頁面源文件「<腳本> ... < /腳本>」部分丟失。如果我通過單擊Web瀏覽器上的重新加載按鈕來重新加載頁面,則該部分會再次出現。

我試圖改變一些東西,比如HTML中的對象類,它可以在ERB文件保存後正確更新,但只有在頁面第一次加載時才能加載JavaScript,並且需要從瀏覽器中單擊重新加載頁面。

我想知道它是Rails的緩存問題還是我弄錯了什麼?我目前在Mac上使用Rails 4.2.1。

謝謝!

+0

出於調試原因:在javascript_include標籤內的application.html.erb文件中將data-turbolinks-track切換爲false。然後再試一次。 – crispychicken

+0

'我需要在ERB文件中加入一些JavaScript - 如果你需要將javascript放入你的視圖中,這意味着其他的東西是錯誤的。所以標準問題是:你爲什麼需要它? – BroiSatse

+0

我使用Javascript來初始化頁面的組件。例如,我在某些Textarea字段上使用Tinymce進行編輯。所以我需要在每個頁面上都有一個Javascript來初始化組件。 – user2114189

回答

0

如果您只需要將某些變量從erb轉移到javascript,則可以在該頁面上的特殊標記上使用隱藏字段或屬性。所以我相信,你不需要在erb文件中使用腳本標籤,除非你必須包含一些第三方的JavaScript。

我很確定你的問題出現,因爲你正在使用自動集成的turbolinks。

Turbolinks將評估它訪問的頁面中的任何腳本標記,如果這些標記沒有類型或者類型是text/javascript。所有其他腳本標記將被忽略。

來源:https://github.com/rails/turbolinks

你可以從你的Gemfile刪除它們,捆綁再試,僞造我的假設 - 或者只是包括類型的腳本標籤。