我目前正在尝试Rails 6.0.0,它似乎已经将默认的javascript
文件夹从app/assets/javascript
移动到app/javascript
。application.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
中所需的库。
require("bootstrap/dist/js/bootstrap")
在index.js中,我调用bootstrap特定的JS,用于弹出窗口、模态......我得到:
Uncaught TypeError: $(...).modal is not a function
我不想把所有的JS都写在application.js中,因为每个页面都要加载整个网站的JS,这太疯狂了!这就是为什么我想把它们分开,在我需要的时候包括进去。
另外,为什么我们必须在application.js
中要求JS文件?如果我们使用javascript_pack_tag
,我们是否需要在application.js
中要求这些文件?
这是我刚刚创建的一个dummy存储库。
参考:here解释了如何要求自定义JS文件。
2条答案
按热度按时间tp5buhyn1#
添加到您的
application.html.erb
:u7up0aaq2#
您可以创建一个文件夹结构作为您的视图。因此,假设您有一些自定义表单验证要添加到用户的编辑视图中。您有以下结构:
app/views/users/edit.html.erb
在
edit.html.erb
中,删除所有JS代码并删除script标记,而是添加:打开
app/javascript/packs
文件夹,创建与编辑视图相同的文件夹结构,如下所示:app/javascript/packs/product/edit.js
.内部
edit.js
打开
config/application.rb
,在模块内部: