【问题标题】:Rails 6 - require JS files in some controller actionsRails 6 - 在某些控制器操作中需要 JS 文件
【发布时间】:2020-01-02 05:07:20
【问题描述】:

我目前正在尝试 Rails 6.0.0,它似乎已将默认的 javascript 文件夹从 app/assets/javascript 移动到 app/javascriptapplication.js 文件现在位于 app/javascript/packs

现在,我想为每个控制器动作添加 JS 文件。例如我有:

  • UsersController#index
  • UsersController#show
  • UsersController#edit

在某些控制器操作上,我需要添加一些 javascript:

  • app/javascript/user/index.js
  • app/javascript/user/show.js
  • app/javascript/user/edit.js
  • app/javascript/user/form.js(假设我需要一些 js 调整)

这是我目前正在做的事情。在控制器视图中:

<%= javascript_pack_tag 'user/index', 'data-turbolinks-track': 'reload' %>

但是,在index.js 中,我无法调用application.js 中所需的库。例如在 application.js 中:

require("bootstrap/dist/js/bootstrap")

在 index.js 中,我将引导特定的 JS 称为弹出框、模态...我得到了:

Uncaught TypeError: $(...).modal is not a function

我不想在 application.js 中编写所有 JS,因为每个页面都必须加载整个网站的 JS,这太疯狂了!这就是为什么我要拆分它们并在需要时包含它们。

另外,为什么我们必须在application.js 中引入 JS 文件?如果我们使用javascript_pack_tag,我们是否需要在application.js 中要求这些文件?

这是我刚刚创建的 dummy 存储库。

参考:here 解释如何需要自定义 JS 文件。

【问题讨论】:

  • 我无法将其标记为重复,但这已在此之前得到解答:stackoverflow.com/questions/56242664/…
  • 包含app/javascript/user/form.js 包的标准是什么?
  • @Gotenks-J 谢谢,但我在发布这个问题之前阅读了该帖子,让我更新参考链接
  • @SebastianPalma 我猜想在客户端进行一些验证

标签: javascript ruby-on-rails webpack webpacker ruby-on-rails-6


【解决方案1】:

添加到您的application.html.erb

<%= javascript_pack_tag controller_name %> for controllers <br/>
<%= javascript_pack_tag action_name %> for actions

【讨论】:

  • 当我更新问题时,我得到了错误。我不能在另一个脚本中调用引导方法
猜你喜欢
  • 2011-10-10
  • 2020-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-18
  • 2011-06-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多