🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

jQuery UI

jQuery UI はjQuery公式のインターフェースライブラリであり、対話型のウェブアプリケーションを作る際に役立ちます。

jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

1回答

1555閲覧

rails6でTag-itを導入したい

da_ast

総合スコア7

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

jQuery UI

jQuery UI はjQuery公式のインターフェースライブラリであり、対話型のウェブアプリケーションを作る際に役立ちます。

jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2020/12/22 15:04

編集2020/12/23 01:58

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'

他に見るべきファイルがありましたらご指摘ください。
煩雑かつ大雑把な質問で申し訳ありませんがよろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

すいません。当方も初学者ですので参考程度に(的外れでしたら申し訳ないです).
以下3点が気になりました。
0. エラー

rails sのログをみると以下のエラーが見つかります。

とありますが、こちらのエラーはwebpackerのコンパイルエラーでしょうか?だとするとjsのコンパイルに失敗してtag-itのjsが読み込まれていないかもしれません。

2. webpackerのエントリーファイル

app/javascript/packsにダウンロードしたtags.jsを置きました。

とありますが、tag-itのjsライブラリはtag-it.jsもしくはtag-it.min.jsではないでしょうか(github参照)。現状だとapp/javascript/packs/application.jsのrequire("tag-it")という設定と、実際のjsのファイル名が不一致を起こしているように思えます。

3. 前提のjs

そもそもsprocket/assetpipelineではなくwebpackerを利用してjsを利用されていると考えましたが、tagitはjqueryやjquery-uiが関連のライブラリとして必須のようですので、ここらあたりの必要なjsがyarn addコマンドでインストールもしくはCDNで読み込みされているでしょうか

以上です。ご参考になれば

投稿2021/05/18 08:36

BLACK13

総合スコア17

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問