在rails中重用相同的脚本

时间:2018-03-02 09:52:26

标签: javascript jquery ruby-on-rails ruby coffeescript

我在不同的页面中有相同的表格。在那里我有隐藏的字段,价值来自脚本,在表单提交。我在点击提示按钮时触发该脚本,所有提交按钮ID在不同页面中都不同。如何为所有页面重用相同的脚本?

 $('#submit').click(function (e) {
    // place content into form hidden field.
    // I need this code to be reused.
    }
});

2 个答案:

答案 0 :(得分:0)

如果按钮跨越多个页面,则听起来好像脚本应该在asset pipeline中。

阅读,但通常这意味着您的脚本将位于app/assets/javascripts下的javascript文件中,此代码可供视图使用。

因此,如果您在ID为submit的不同视图中设置按钮,则此代码将全部应用于它们。

考虑将选择器更改为以js-为前缀的类(即js-submit)以阐明定位。这将进一步减少一些痛苦。

看看这个并看看你如何继续 - 任何问题,请告诉我。

答案 1 :(得分:0)

使用ID作为选择器在很多方面都是一种反模式,因为它会导致写入"页面特定的"导致重复的javascript,最后你会希望增强同一页面上多个页面甚至多个元素的行为。

更好的方法是使用类作为选择器,并将您的javascript视为增强特定元素行为的模块。

让你的JS减少的一些关键技术:

  • 将您的javascript放入return result.Take(0);
  • 使用元素上的数据属性等属性将输入传递给处理程序。
  • 使用.on委派处理程序代替非强制处理程序,例如app/assets/javascripts等。如果您希望JS与Turbolinks一起正常工作,这一点至关重要。
  • 确保您的处理人员自行清理并且没有意外的副作用。