本記事は、🔽「Turbo Rails Tutorial」の学習を進めていく際の個人メモです!
🔽 0章で行った環境構築はこちら
1章 A simple CRUD controller with Rails
このチュートリアルでは以下のような成果物を作成していきます。基本的なCRUDをページ移動せずSPAのような操作性で実現していきます!
テスト作成
Rails 標準のシステムテスト(Minitest)を作成します。システムテストでは実際のブラウザを使用するため JavaScript を使った操作も簡単にテストすることができるのですね。
以下のコマンドでシステムテストが走ります🏃🏼♀️
$ bin/rails test:system
モデル作成
name
カラムを持ったQuote
モデルを作成します。空のデータを防ぐため、name
カラムにpresence: true
とnull: false
制約を追加します。
ルーティングとコントローラー作成
Quote
リソースにresources
を追加します。また、それぞれ対応する7つのアクションもコントローラに追加します。Turbo Rails Tutorialではこの辺の詳しい説明はなく、「ここでつまづいている人はRuby on Rails ドキュメントの入門ガイドを読んで戻ってきてね!」と書いてありましたので、この辺はRailsチュートリアルでじっくり学んでからやると良さそうですね。
ビューの追加
simple_form
を使ってフォームを作成していきます。
私は以下の記事を参考に日本語対応してみました!
🔽 GitHubに残しているので参考に置いておきます
まだCSS当たってないので見た目は寂しいですが、現時点こんな感じです。
特別なことはしていませんが、すでにこの時点でSPAチックになっています。見積もりの作成や編集、削除にページのリロードが発生しません。(その理由は3章で教えてくれそうです。)
ここで、空のフォームを送信した際にエラーメッセージが表示されないことを確認します。これは Rails7からの「重大な変更」であるとチュートリアルで述べられています。status: :unprocessable_entity
を追加することで正常になります。(こちらも詳しくは第3章で学ぶようなので、楽しみにしておきましょう。)
そして、フラッシュメッセージが機能していないことにも気づきました。チュートリアルの目次を見ると7章で対応しそうな気配があったので、今はそのままにします。
seed を追加する
test/fixtures/quote.yml
のデータをそのまま開発データとして利用します。db/seeds.rb
にbin/rails db:fixtures:load
を行うよう記載します。
test/fixtures/*
は minitest を実行する際に使用されるデータですが、それをそのまま開発データとしても再利用しちゃおうって訳ですね!
🔼 読んでbin/rails db:fixtures:load
について、勉強しました。
以上、1章でした👍
🔽 次は2章をやっていきます!CSS書いていくっぽいですね✌️