【问题标题】:Rails: How to run javascript when the controller render actionRails:控制器渲染动作时如何运行javascript
【发布时间】:2014-01-23 23:11:20
【问题描述】:

为了论证,我们有“新产品”的形式。

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

如果在提交表单时出现验证错误,Rails 将呈现动作“new”以重新显示有错误的“new product”表单(确切地在“在“ProductsController”中创建”方法)。

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

我该如何解决这个问题?

【问题讨论】:

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


    【解决方案1】:

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

    ready = ->
    
      ...your coffeescript goes here...
    
    $(document).ready(ready)
    $(document).on('page:load', ready)
    

    您也可以尝试禁用 turbolinks,看看是否确实是问题所在。

    【讨论】:

    • 我刚刚发现我的问题是因为 Paloma Gem。但是根据我的问题,您的回答仍然完全“正确”。
    猜你喜欢
    • 2016-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    • 1970-01-01
    • 2014-01-12
    • 2015-12-15
    相关资源
    最近更新 更多