質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby on Rails 6

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

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

JavaScript

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

Q&A

0回答

727閲覧

【Ruby on Rails】JavaScriptが使用できない。

gussan-me

総合スコア7

Ruby on Rails 6

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

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

JavaScript

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

0グッド

0クリップ

投稿2021/02/03 00:41

編集2021/02/03 12:39

Rails上で、JavaScriptを使用する方法についてご教示いただきたいです。
■開発環境
・Rails6.0
・Ruby 2.6.3
・AWS cloud9

■困っていること
Railsでモーダルウインドウを作成しようとしているのですが、JavaScriptが反応しません。
下記の手順で実装しようとしております。
①application.html.erbに下記のコードを記入

<!DOCTYPE html> <html> <head> <title><%= full_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' %> <%= render 'layouts/shim' %> </head>

②index.html.erbにモーダルのコードを記入

<h1>新着投稿<p class="post-button" id="open"><span>投稿をする</span></p></h1>   ・   ・   ・ <div id="mask" class="hidden"></div> <div id="modal" class="hidden"> <h2>課題曲を投稿する</h2> <%= form_with model: @hmhr_practice,local: true do |f| %> <div> <label>名前</label> <%= f.text_field :name, class: "form-control", id: "js-name" %> <p id='js-name-error' class="hidden">名前を入力してください。</p> </div> <div> <label>タイトル</label> <%= f.text_field :title, class: "form-control",id: "js-title" %> <p id='js-title-error' class="hidden">タイトルを入力してください。</p> </div> <div> <label>内容</label> <%= f.text_area :content, class: "form-control",id: "js-content" %> <p id='js-content-error' class="hidden">投稿内容を入力してください。</p> </div> <div> <%= f.submit "投稿内容を確認する", class: "btn btn-primary", id: "submit",'data-disable-with' => false %> </div> <% end %> <div id="close"> 閉じる </div>

③app/javascript/packs/appliation.jsに下記のコードを記入

// This file is automatically compiled by Webpack, along with any other files // present in this directory. You're encouraged to place your actual application logic in // a relevant structure within app/javascript and only use these pack files to reference // that code so it'll be compiled. require("@rails/ujs").start() require("turbolinks").start() require("@rails/activestorage").start() require("channels") // Uncomment to copy all static images under ../images to the output folder and reference // them with the image_pack_tag helper in views (e.g <%= image_pack_tag 'rails.png' %>) // or the `imagePath` JavaScript helper below. // // const images = require.context('../images', true) // const imagePath = (name) => images(name, true) 'use strict'; { const $open=document.getElementById('open'); const $close=document.getElementById('close'); const $modal=document.getElementById('modal'); const $mask=document.getElementById('mask'); const $submit=document.getElementById('submit'); $open.addEventListener('click', () => { $modal.classList.remove('hidden'); $mask.classList.remove('hidden'); }); $close.addEventListener('click', () => { $modal.classList.add('hidden'); $mask.classList.add('hidden'); }); $mask.addEventListener('click', () => { $close.click(); }); $submit.addEventListener('click', () => { if(document.getElementById('js-name').value==''){ document.getElementById('js-name-error').classList.remove('hidden'); } }); $submit.addEventListener('click', () => { if(document.getElementById('js-title').value==''){ document.getElementById('js-title-error').classList.remove('hidden'); } }); $submit.addEventListener('click', () => { if(document.getElementById('js-content').value==''){ document.getElementById('js-content-error').classList.remove('hidden'); } }); }

■気になっている箇所
application.html.erbの<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>stylesheet_link_tagは赤色に変わっているのに対して、
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>javascript_pack_tagは白色のままということが気になっております。
色が変わっていないのは、うまく読み込めていないということでしょうか。

以上でございます。
恐れ入りますが、ご確認のほどよろしくお願いいたします。

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

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

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

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

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

maisumakun

2021/02/03 00:51

・「赤色」「白色」とは、何で見ての話でしょうか? ・ブラウザコンソールにエラーなどは出ていませんか?
gussan-me

2021/02/03 12:37

ご確認ありがとうございます。 ・「赤色」「白色」とは、何で見ての話でしょうか? ⇨テキストエディタ(cloud9)の文字の色でございます。 ・ブラウザコンソールにエラーなどは出ていませんか? ⇨はい。エラーなどはございませんでした。。 getElementByIdで指定している下記の箇所をクリックしても、何も動きが発生しません。。 <h1>新着投稿<p class="post-button" id="open"><span>投稿をする</span></p></h1>
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問