LoginSignup
2
0

More than 1 year has passed since last update.

Rails7を使ったシンプルなCRUD。Turbo Rails Tutorial をやってみた(1章)

Last updated at Posted at 2023-01-24

本記事は、🔽「Turbo Rails Tutorial」の学習を進めていく際の個人メモです!

🔽 0章で行った環境構築はこちら

1章 A simple CRUD controller with Rails

このチュートリアルでは以下のような成果物を作成していきます。基本的なCRUDをページ移動せずSPAのような操作性で実現していきます!

テスト作成

Rails 標準のシステムテスト(Minitest)を作成します。システムテストでは実際のブラウザを使用するため JavaScript を使った操作も簡単にテストすることができるのですね。
以下のコマンドでシステムテストが走ります🏃🏼‍♀️

$ bin/rails test:system

モデル作成

nameカラムを持ったQuoteモデルを作成します。空のデータを防ぐため、nameカラムにpresence: truenull: false制約を追加します。

ルーティングとコントローラー作成

Quoteリソースにresourcesを追加します。また、それぞれ対応する7つのアクションもコントローラに追加します。Turbo Rails Tutorialではこの辺の詳しい説明はなく、「ここでつまづいている人はRuby on Rails ドキュメントの入門ガイドを読んで戻ってきてね!」と書いてありましたので、この辺はRailsチュートリアルでじっくり学んでからやると良さそうですね。

ビューの追加

simple_formを使ってフォームを作成していきます。

私は以下の記事を参考に日本語対応してみました!

🔽 GitHubに残しているので参考に置いておきます

まだCSS当たってないので見た目は寂しいですが、現時点こんな感じです。
スクリーンショット 2023-01-23 22.00.09.png

特別なことはしていませんが、すでにこの時点でSPAチックになっています。見積もりの作成や編集、削除にページのリロードが発生しません。(その理由は3章で教えてくれそうです。)

ここで、空のフォームを送信した際にエラーメッセージが表示されないことを確認します。これは Rails7からの「重大な変更」であるとチュートリアルで述べられています。status: :unprocessable_entityを追加することで正常になります。(こちらも詳しくは第3章で学ぶようなので、楽しみにしておきましょう。)

そして、フラッシュメッセージが機能していないことにも気づきました。チュートリアルの目次を見ると7章で対応しそうな気配があったので、今はそのままにします。

seed を追加する

test/fixtures/quote.ymlのデータをそのまま開発データとして利用します。db/seeds.rbbin/rails db:fixtures:loadを行うよう記載します。

test/fixtures/*は minitest を実行する際に使用されるデータですが、それをそのまま開発データとしても再利用しちゃおうって訳ですね!

🔼 読んでbin/rails db:fixtures:loadについて、勉強しました。

以上、1章でした👍
🔽 次は2章をやっていきます!CSS書いていくっぽいですね✌️

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0