Rails:如何在控制器呈现操作时运行javascript

时间:2014-01-23 23:11:21

标签: javascript jquery html ruby-on-rails forms

为了论证,我们有“新产品”表格。

我为html表单元素使用了一些javascript库(例如icheck,select2,wysihtml5)。这些表单元素需要与其关联的js库函数一起运行,以便在呈现HTML页面之前正确显示(例如$(".checkbox").iCheck({...}))。

如果在提交表单时存在验证错误,Rails将呈现操作“ new ”以重新显示“新产品”表单中的错误(完全在“ ProductsController ”中的“创建”方法。

问题是Rails在这种情况下不会再次执行相关的javascript文件(例如products.js.coffee)。然后,基于javascript的html表单元素无法正常显示(因为$(".checkbox").iCheck({...})未执行)。

如何解决此问题?

1 个答案:

答案 0 :(得分:1)

这可能是一个涡轮问题。查看jquery-turbolinks gem,或尝试以下操作:

ready = ->

  ...your coffeescript goes here...

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

您也可以尝试禁用turbolinks以查看它是否是问题。