45日目 入力コメントをajaxで送信②(jqueryの導入について)

こんばんは?おはようございます???
どっちかは不明ですが、何はともあれ、今日もnoteに少しだけ書きます。これまでの取り組みは以下にまとめてあります。

ちなみに昨日からコメントを入力した内容をajaxで送信して、データベース上へ登録できるように取り組み中であり、(JRuby on Rails)を用いております。

今日はajaxを使用する場合には導入した方が楽になるjqueryについて説明します。

動作環境(前提条件)

・Windows 10
・JRuby 9.1.17
・Rails 4.2.4
・bundler 1.17.3 (※バージョン「2.3.15」も同時にインストール済)

jqueryとは

以下の記事がわかりやすいと思います。

jqueryを用いると、javascriptを用いて書く場合と比べて、コードを書く量が大幅に減らすことができ、コードをラクに書くことができるようになります。

また、ブラウザの違いを吸収することができることも大きく、Google ChromeやSafari等、ブラウザによっては、同じjavascriptでも動作が異なることがあるようですが、jqueryならば同じような動作をしてくれるようです。

一方で、通常のjavascriptよりも動作が遅くなることがあったり、javascriptの動きを理解しなくてもjqueryを書くことができるため、javascriptそのものに対する理解が浅くなりがちという面もあるようです。

わたしとしては、javascriptの動きをしっかりと理解しつつも、コードを楽に書くことができるならばどんどんjqueryを使っていったほうが良いかと思います。(ラクに書けるというのは大きいと思います。)

Railsでjqueryを導入する場合

Railsへのjquery導入は以下の記事を参考にします。

実はこれまでの開発・環境構築作業で既にjqueryを導入済です。
ちょうど1か月前(記事を書き始めてから14日目)にRailsをインストールする際に、自動的にjqueryもインストールしていました。

実際にRailsアプリケーションのプロジェクトデータ内にあるGemfileを開いて見ると、以下のようなコード内容となっておりますが、18行目に「gem 'jquery-rails'」というRailsでjqueryを使用するために必要なGemが記述済になっています。

1  source 'https://rubygems.org'
2  
3  ruby '2.3.3', :engine => 'jruby', :engine_version => '9.1.17.0'
4  
5  # Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
6  gem 'rails', '4.2.4'
7  # Use jdbcpostgresql as the database for Active Record
8  gem "activerecord-jdbcpostgresql-adapter", "1.3.24", :platform => :jruby
9  # Use SCSS for stylesheets
10 gem 'sass-rails', '~> 5.0'
11 # Use Uglifier as compressor for JavaScript assets
12 gem 'uglifier', '>= 1.3.0'
13 # Use CoffeeScript for .coffee assets and views
14 gem 'coffee-rails', '~> 4.1.0'
15 # See https://github.com/rails/execjs#readme for more supported runtimes
16 gem 'therubyrhino'
17 # Use jquery as the JavaScript library
18 gem 'jquery-rails'
19 # Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
20 gem 'turbolinks'
21 # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
22 gem 'jbuilder', '~> 2.0'
23 # bundle exec rake doc:rails generates the API under doc/api.
24 gem 'sdoc', '~> 0.4.0', group: :doc
25 
26 # Use ActiveModel has_secure_password
27 # gem 'bcrypt', '~> 3.1.7'
28 
29 # Use Unicorn as the app server
30 # gem 'unicorn'
31 
32 # Use Capistrano for deployment
33 # gem 'capistrano-rails', group: :development
34 
35 
36 # Windows does not include zoneinfo files, so bundle the tzinfo-data gem
37 gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

また、上記Gemファイルの内容にて「bundle install」&「bundle update」(詳しくは先ほどの14日目の記事)も実施済であり、Railsにてjqueryを使用するためのGemをインストール済です。

さらに、実際にRailsからjqueryを使用するためには、application.jsファイルに以下の記述を追加する必要があります。

//= require jquery
//= require jquery_ujs

※application.jsファイルの場所はRailsのバージョンが4.2.4であれば、
Railsアプリケーションのプロジェクトデータ内
⇒「app」フォルダ
⇒「javascripts」フォルダ
⇒「application.js」ファイル

の順で辿ることができるかと思います。

jqueryの動作確認

この章でも以下を参考にします。

動作確認のために「index.html.erb」ファイルを使って確認しようと思いますが、新しく作るのも手間ですので、これまでの作業で作成済の「index.html.erb」を使って、動作を確認してみます。(詳しくは以下の38日目の記事)

現在、わたしが開発中のRailsアプリケーションにchatコントローラーを作成済であるため、「app」フォルダ ⇒ 「view」フォルダ ⇒ 「chat」フォルダの下に「index.html.erb」というファイルがあります。(以下はエディタにVisual Studio Codeを使用した場合の画面例です。)

「index.html.erb」の中身は上記の写真からでもわかるように以下のコード内容となっております。

変更前

1  <div class = "real_chat">
2      <div id = "free_space">
3          <div id = "input_area">
4              <textarea name="comment"></textarea>
5          </div>
6      </div>
7  
8      <div id = "history_space">
9          <div id = "output_area">
10             <table id = "result">
11             </table>
12         </div>
13     </div>
14 </div>

そこで、以下のように変更を加えます。

変更後1(10行目に1行追加)

1  <div class = "real_chat">
2      <div id = "free_space">
3          <div id = "input_area">
4              <textarea name="comment"></textarea>
5          </div>
6      </div>
7  
8      <div id = "history_space">
9          <div id = "output_area">
10             <p>jQuery稼働テスト(未稼働)</p>
11             <table id = "result">
12             </table>
13         </div>
14     </div>
15 </div>

上記で変更した内容は10行目の「<p>jQuery稼働テスト(未稼働)</p>」の追加であり、jqueryを使う前に動きの変化を確認するためのコードです。

実際にローカルでアプリケーションを起動させてみると、画面の右側あたりに、「jQuery稼働テスト(未稼働)」という文章が出ていることを確認できるかと思います。(全体図と拡大図を下に載せます。)

jquery稼働前の全体図
jquery稼働前の拡大図

それでは、先ほどの変更(変更後1)から、更に以下のように変更(変更後2)します。

変更後2(11~16行目を更に追加)

1  <div class = "real_chat">
2      <div id = "free_space">
3          <div id = "input_area">
4              <textarea name="comment"></textarea>
5          </div>
6      </div>
7  
8      <div id = "history_space">
9          <div id = "output_area">
10             <p>jQuery稼働テスト(未稼働)</p>
11             <script type="text/javascript">
12               $(document).ready(function() {
13                 $("p").text("jQuery稼働テスト(稼働中)");
14               });
15             </script>
16             <table id = "result">
17             </table>
18         </div>
19     </div>
20 </div>

上記で変更した内容は11~16行目であり、<p>タグへの記述内容を「jQuery稼働テスト(稼働中)」へと変えるためのjqueryのコード内容が追加されています。

現在、10行目の<p>タグに「jQuery稼働テスト(未稼働)」と書かれていますが、「jQuery稼働テスト(稼働中)」へと変わっていれば、jqueryが動いたことになります。

実際にjqueryが稼働していて、「jQuery稼働テスト(稼働中)」へと変わるか確認してみます。変更を保存してローカルでアプリケーションを再度開いて見ると、以下のように「jQuery稼働テスト(未稼働)」から「jQuery稼働テスト(稼働中)」へと表示内容が変わっていることを確認できるかと思います。

jquery稼働後の全体図
jquery稼働後の拡大図

これで、jqueryが動いていることを確認できました。
実際にjqueryを書く際には、直接「index.html.erb」など、HTML部分に書き込むのではなく、javascriptファイルを用意してそちらに書き込んだほうがよいのですが、その説明は次回に行います。

また、本日変更した内容は、単にjqueryの動作確認にしか使用する予定がないため、変更を以下のように元に戻します。

1  <div class = "real_chat">
2      <div id = "free_space">
3          <div id = "input_area">
4              <textarea name="comment"></textarea>
5          </div>
6      </div>
7  
8      <div id = "history_space">
9          <div id = "output_area">
10             <table id = "result">
11             </table>
12         </div>
13     </div>
14 </div>

(念のため、元に戻っていることを確認します。ローカルでアプリケーションを開き、画面右側に「jQuery稼働テスト(未稼働)」または「jQuery稼働テスト(稼働中)」のどちらの文章も出ていなければ大丈夫です。)

おわりに

ここまで読んでくださってありがとうございました。
次回もちょっとだけ作業して、noteにも書き込んでいきます。
次回もよろしくお願いいたします。

この記事が気に入ったらサポートをしてみませんか?