Rails7
开始默认使用 importmap
作为 javascript
依赖的管理工具(类似于 npm)
遇到的问题
- 生成的项目工程目录下的 bin 目录中没有 importmap 命令
- turbo-rails 貌似没有被引入项目中(直接创建项目工程后没有进行相关配置)
# 安装 turbo-rails
- 安装 importmap
# step1. 安装 importmap | |
bin/rails·importmap:install |
上述命令,主要会生成 bin/importmap
、 config/importmap.rb
、 app/javascript/application.js
文件
- 通过 importmap 引入 turbo
# step2. 使用 importmap 管理 turbo 依赖 | |
bin/importmap·pin·@hotwired/turbo |
执行上述命令后, Rails
会自动往 config/importmap.rb
文件中加入依赖名称,并在 app/javascript/application.js
文件中导入 turbo-rails
# Pin npm packages by running ./bin/importmap | |
pin "application" | |
pin "@hotwired/turbo-rails", to: "turbo.min.js" |
// Configure your import map in config/importmap.rb. Read more: https://github.com/rails/importmap-rails | |
import "@hotwired/turbo-rails" |
- 安装 turbo
# step3 | |
bin/rails·turbo:install |
# 使用 turbo-rails
使用
turbo_confirm
代替原先的confirm
,例如:
<%= button_to "Empty cart", cart, method: :delete, form: { data: { turbo_confirm: "Are you sure?" } } %>
生成的 HTML 代码如下
<form data-turbo-confirm="Are you sure?" class="button_to" method="post" action="/carts/20"> | |
<input type="hidden" name="_method" value="delete" autocomplete="off"> | |
<button type="submit">Empty cart</button> | |
<input type="hidden" name="authenticity_token" value="cxmrMyiULbRE9a3PrKRdSaFz90lhI7BnuQ45asjQjITJMsx-5186VueizTPDYklStOYWCtwSy_tRuc9mttDKOQ" autocomplete="off"> | |
</form> |
效果
关于 Rails7+
版本中使用 importmap
,可以参考 Import Maps Under the Hood in Rails 7 这篇文章