Tag-itを使ってタグ付機能のUIを整えたいのですが導入の仕方がわかりません。rails6でのJavascriptファイルの扱いがいまいち理解できておらず、うまく導入することができません。
いろいろ調べてみたのですがrails5までの情報ばかりであまり参考にできませんでした。
webpackerの理解も浅く勉強不足と言われても返す言葉もございませんが、どうかご教授いただけませんでしょうか。
##やってみたこと
調べた内容を元に手探りでやってみたのですが、勉強不足ゆえ的外れなことをしているかもしれません。間違っていることなどありましたらご指摘いただけると幸いです。
jquery-uiが必要とのことなのでgemfileに追記。
Gemfile
1. 2. 3gem 'jquery-rails' 4gem 'jquery-ui-rails' 5
jquery等のバージョンは以下の通りです。
packagejson
1{ 2 "name": "アプリ名", 3 "private": true, 4 "dependencies": { 5 "@fortawesome/fontawesome-free": "^5.15.1", 6 "@rails/actioncable": "^6.0.0", 7 "@rails/activestorage": "^6.0.0", 8 "@rails/ujs": "^6.0.0", 9 "@rails/webpacker": "4.3.0", 10 "bootstrap": "^4.5.3", 11 "jquery": "^3.5.1", 12 "jquery-ui-dist": "^1.12.1", 13 "popper.js": "^1.16.1", 14 "turbolinks": "^5.2.0" 15 }, 16 "version": "0.1.0", 17 "devDependencies": { 18 "webpack-dev-server": "^3.11.0" 19 } 20} 21
Tag-it と jQuery UI を読み込むように application.js と application.css に追記。
app/javascript/packs/application.js
js:application.js
1 2require("@rails/ujs").start() 3require("turbolinks").start() 4require("@rails/activestorage").start() 5require("channels") 6require("jquery-ui") 7require("tag-it") 8import "bootstrap"; 9import '../stylesheets/application'; 10import '@fortawesome/fontawesome-free/js/all';
app/assets/stylesheets/application.scss
*= require_tree . *= require jquery.tagit *= require tagit.ui-zendesk *= require_self
app/assets/stylesheersにダウンロードしたjquery.tagit.cssとtagit.ui-zendesk.cssを、
app/javascript/packsにダウンロードしたtags.jsを置きました。
./app ├── assets │ └── stylesheets │ ├── application.scss │ ├── jquery.tagit.css │ └── tagit.ui-zendesk.css ├── javascript │ ├── packs │ │ ├── application.js │ │ └── tags.js
そしてtag-itを適用したいhtmlに追記
form
1. 2. 3<script type="text/javascript"> 4 $(document).ready(function() { 5 $("#tags").tagit(); 6 }); 7</script> 8. 9. 10<%= f.label :tag_name %> 11<%= f.text_field :tag_name, value:@tag_list %> 12<ul id="tags"><%= f.text_field :tag_name %></ul>
##エラー
Chromeの開発者ツールで見ると、上記ページに以下のようなエラーが見られます。
application.js:12 Uncaught Error: Cannot find module 'tag-it' at webpackMissingModule (application.js:12) at Module.<anonymous> (application.js:12) at Module../app/javascript/packs/application.js (application.js:26) at __webpack_require__ (bootstrap:19) at bootstrap:83 at bootstrap:83 tag-it.js:1 Failed to load resource: the server responded with a status of 404 (Not Found) VM20:3 Uncaught TypeError: $(...).tagit is not a function at HTMLDocument.<anonymous> (<anonymous>:3:20) at Object.resolveWith (jquery.min.js:16) at Object.done (jquery.min.js:16) at init.ready (jquery.min.js:16) at <anonymous>:2:17 at o.assignNewBody (turbolinks.js:604) at o.replaceBody (turbolinks.js:542) at turbolinks.js:535 at o.e.renderView (turbolinks.js:495) at o.render (turbolinks.js:533)
rails sのログをみると以下のエラーが見つかります。
ERROR in ./app/javascript/packs/application.js Module not found: Error: Can't resolve 'tag-it'
他に見るべきファイルがありましたらご指摘ください。
煩雑かつ大雑把な質問で申し訳ありませんがよろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。