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

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

詳細はこちら
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

jQuery UI

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

Ruby on Rails

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

JavaScript

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

jQuery

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

Q&A

解決済

1回答

2083閲覧

rails6 - jqueryが効かない

mnishikawa

総合スコア7

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

jQuery UI

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

Ruby on Rails

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

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2019/12/05 18:32

ユーザー登録画面で、該当のタグを選択した時に色が変わるように、
'active'クラスの付け替えをしようとしています。
(イメージ↓ ハッシュタグの部分をクリックすると背景が赤、文字を白に変えたい)
イメージ説明

やったこと

new.html.erbの"tag-item"クラスに、"active"クラスを付与するよう、
jqueryに記述しましたがうまくいきません。

new.html.erb

ruby

1<% provide(:title, 'エージェント登録') %> 2 3<div class="form"> 4 <div class="form-headline"> 5 <h1 class="title">エージェント 無料会員登録</h1> 6 <p class="description">以下の項目を入力して、Kotosearchに登録してください</p> 7 </div> 8 <div class="form-container"> 9 <%= form_with model: @agent do |f| %> 10 11 ~抜粋~ 12 13 <%= f.label :scale, "会社規模", class: "form-label" %> 14 <%= f.text_field :scale, placeholder: "例) 大", class: "form-block" %> 15 16 <div class="form-label-ttl"> 17 <%= f.label :target_category, "ターゲット国", class: "form-label" %> 18 </div> 19  <label class="tag-item"> # クリック時にactiveクラスを挿入 20 <%= f.radio_button :target_category, 1 %><span>#</span>アメリカ 21 </label> 22 <label class="tag-item"> # クリック時にactiveクラスを挿入 23 <%= f.radio_button :target_category, 2 %><span>#</span>中国 24 </label> 25 <label class="tag-item"> # クリック時にactiveクラスを挿入 26 <%= f.radio_button :target_category, 3 %><span>#</span>台湾 27 </label> 28 29 <%= f.label :target_audience, "ターゲット層", class: "form-label target_audience" %> 30 <%= f.text_field :target_audience, placeholder: "例) 富裕層", class: "form-block" %> 31 32     ~抜粋~

agent_new.js

jquery

1$(function() { 2 $('.tag-item').on('click', function() { 3 $(this).toggleClass('active'); 4 }); 5}); 6

application.js

require("@rails/ujs").start() require("turbolinks").start() require("@rails/activestorage").start() require("channels") require('jquery') import "../src/application.scss" import "../src/agent_new.js"

environment.js

const { environment } = require('@rails/webpacker') const webpack = require('webpack') environment.plugins.prepend('Provide', new webpack.ProvidePlugin({ $: 'jquery/src/jquery', jQuery: 'jquery/src/jquery' }) ) module.exports = environment

headタグ

<head> <title><%= yield(:title) %></title> <%= csrf_meta_tags %> <%= csp_meta_tag %> <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %> </head>

イメージ説明

rails6で、webpackerを使ってjqueryを読み込ませることはできていると思うのですが、
該当のagent_new.jsに記述してもうんともすんとも言いません。
(デベロッパーツールで見ると、クリックすると一応”tag-item”クラスが一瞬光るので反応?しています)

かれこれ6時間ほど立ち往生している状態ですので、皆様のお力をお借りできますと幸いです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

agent_new.jsはpacksディレクトリに(application.jsと同じ)配置してみてください。その上で

import "../src/agent_new.js"

import "./agent_new.js"

投稿2019/12/06 01:48

NCC1701

総合スコア1680

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

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

mnishikawa

2019/12/06 02:20

ご回答ありがとうございます! agent_new.jsをpacksディレクトリに移動させて、application.jsのimportも書き換えましたが、 挙動は全く同じでした。(サーバー再起動も試しましたが。。) JSのコードが間違っているのでしょうか‥
mnishikawa

2019/12/06 02:24

今リロードして何回も何回もハッシュタグのボタンをぽちぽち押していたら、 #台湾 だけ偶然?activeクラスがつきました。でも元に戻りません。 読み込みはできているがうまく動作していないということですかね、、、
NCC1701

2019/12/06 03:12

<%= stylesheet_pack_tag 'application' %> linkではなくpackにしてください。
mnishikawa

2019/12/06 04:42

やってみましたが、CSSが外れただけになりました。 お手数おかけしました、色々と自分で試してみます!
mnishikawa

2019/12/06 04:58

<label></label>をpタグに変えたらうまくいきました! ありがとうございました
mnishikawa

2019/12/06 04:58

<label></label>をpタグに変えたらうまくいきました! ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問