2014-01-23 60 views
0

爲了論證的緣故,我們有「新產品」的形式。Rails:如何在控制器渲染動作時運行javascript

我使用了一些JavaScript表格元素(例如icheck,select2,wysihtml5)。在呈現HTML頁面之前,這些表單元素需要與其關聯的js庫函數一起運行才能正確顯示(例如$(".checkbox").iCheck({...}))。

如果對提交表單驗證錯誤,Rails會呈現行動「」,以重新顯示「新產品」形式錯誤(恰好在「的ProductsController」的「創建」方法)。

問題是在這種情況下,Rails不會執行相關的javascript文件(例如products.js.coffee)。然後,基於javascript的html表單元素無法正確顯示,因爲它們應該是(因爲$(".checkbox").iCheck({...})未被執行)。

我該如何解決這個問題?

回答

1

這可能是一個渦輪問題。看看jquery-turbolinks寶石,或嘗試以下操作:

ready = -> 

    ...your coffeescript goes here... 

$(document).ready(ready) 
$(document).on('page:load', ready) 

您也可以嘗試和禁用turbolinks,看它是否是,其實這個問題。

+0

我剛剛發現我的問題是因爲Paloma Gem。但根據我的問題,你的答案仍然完全「正確」。 –