繁体   English   中英

Rails:当控制器渲染动作时如何运行JavaScript

[英]Rails: How to run javascript when the controller render action

为了争辩,我们有“ 新产品 ”的形式。

我对html表单元素使用了一些JavaScript库(例如icheck,select2,wysihtml5)。 这些表单元素需要与其关联的js库函数一起运行才能正确显示(例如$(".checkbox").iCheck({...} )),然后再呈现HTML页面。

如果提交表单时出现验证错误,Rails将呈现“ new ”操作以重新显示带有错误的“ new product ”表单(恰好在“ ProductsController ”中的“ Create ”方法中)。

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

我该如何解决这个问题?

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

ready = ->

  ...your coffeescript goes here...

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

您也可以尝试禁用涡轮链接,以查看是否确实是问题所在。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM