Dropzone.js を Ruby on Rails 7.1.2 に統合するにはどうすればよいですか?
概要
Rail バージョン 7.1.2 に Dropzone.js を統合しようとしていますが、JavaScript が機能しません。 Rails の最新バージョンではノード モジュールのインポートに問題があるようです。そのため、スタイルシートのフォルダーにドロップゾーンの CSS スタイルを手動で追加しました。ただし、このアプローチは JavaScript では機能しません。私が観察したもう 1 つの点は、Dropzone js cdn は機能しますが、JavaScript をローカルにロードする必要があることです。
これは私の application.js ファイルです
// Entry point for the build script in your package.json
import "@hotwired/turbo-rails"
import "./controllers"
import jquery from "jquery"
//= require dropzone
window.jQuery = jquery
window.$ = jquery
window.Dropzone = require(dropzone)
// import "trix"
// import "@rails/actiontext/"
解決策
$ yarn add dropzone
// app/javascript/application.js
import Dropzone from "dropzone";
document.addEventListener("turbo:load", function(event) {
let myDropzone = new Dropzone(".dropzone");
myDropzone.on("addedfile", file => {
console.log(`File added: ${file.name}`);
});
})
<!-- app/views/layouts/application.html.erb -->
<link rel="stylesheet" href="https://unpkg.com/dropzone@5/dist/min/dropzone.min.css" type="text/css" />
# _form.html.erb
<%= form_with url: "/", class: :dropzone do |f| %>
<%= f.file_field :img %>
<% end %>