※本サイトで紹介している商品・サービス等の外部リンクには、アフィリエイト広告が含まれる場合があります。
Ajaxを使えるようにする
Ajaxのリクエストを送るときに、axiosというライブラリを使うと簡単である
まず以下のコードを実行する
yarn add axios
app/javascript/paacks/application.jsを開く
import axios from 'axios'
Ajaxにはhtmlと同じように、get・post・put・deleteリクエストがある
article_title
をclick
したらgetリクエストroot_path
(‘/’)を送るthen
(うまくいったら)、response
をコンソールログに表示する
document.addEventListener('DOMContentLoaded', () => {
$('.article_title').on('click', () => {
axios.get('/')
.then((response) => {
console.log(response)
})
})
})
article_title
をクリックしたら、検証ツールのConsole画面にresponse
が表示されている
article_title
を押しても画面はリロードされていないことがポイント
このように、リロードしなくても画面表示が切り替わるようにしたい
中身をちゃんと読んでいないけど、webpackerのバージョンが古いとか書いてあった
確認したところ、先ほどyarnしたaxiosのバージョンはもちろん最新だった
なのでaxiosのバージョンを落とした
// axiosを削除
yarn remove axios
// バージョン指定して再インストール
yarn add axios@0.19.2
// サーバー再起動
bin/webpack-dev-server
バージョンを講義のものとあわせたら、エラー解消された!
リロードしないとJavaScriptが動かないとき
railsにはTurbolinksというライブラリがあり、これがページ遷移を高速化してくれている
DOMContentLoaded
は、ページをリロードしたときに動く
この動きがTurbolinksと相性があまりよくなかったりする(らしい)
なので、railsが用意してくれているturbolinks:load
を使うようにする
document.addEventListener('turbolinks:load', () => {
$('.article_title').on('click', () => {
axios.get('/')
.then((response) => {
console.log(response)
})
})
})
#DAY5