2014-01-23 34 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。但根据我的问题,你的答案仍然完全“正确”。 –