在rails中重用相同的脚本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在rails中重用相同的脚本相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

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

看看这个,看看你怎么样 - 任何问题,让我知道。

另一答案

使用ID作为选择器在很多方面都是反模式,因为它导致编写“特定于页面”的javascript导致重复,因为最终你需要增强多个页面甚至同一页面上的多个元素的行为。

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

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

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

以上是关于在rails中重用相同的脚本的主要内容,如果未能解决你的问题,请参考以下文章

在 GraphQL 中重用输入类型作为片段 [重复]

重用 GraphQL 片段

如何为每个片段保存一个变量值以重用它? [关闭]

重用 ViewPager 和 FragmentPagerAdapter 的片段

用于在多个活动/片段中重用的全局加载器 (LoaderManager)

具有相同布局的多个片段