✅ 全体構成図(リクエストの流れ)
[ ブラウザ ]
↓(GET /books)
[ ルーティング (routes.rb) ]
↓(books#index に振り分け)
[ コントローラー (books_controller.rb) ]
↓(Book.all を呼び出す)
[ モデル (book.rb) ]
↑(DBのデータを取得)
↓(@booksに代入)
[ コントローラー ]
↓(@books をビューに渡す)
[ ビュー (index.html.erb) ]
↓(@books を表示)
[ ブラウザ ]
✅ コード例
1. ルーティング config/routes.rb
Rails.application.routes.draw do
GETリクエスト '/books' を BooksController の index アクションへ
get 'books', to: 'books#index'
end
books#index は BooksController クラスの index メソッドを指す。
ブラウザから /books にアクセスするとこのルートが反応する。
2. コントローラー app/controllers/books_controller.rb
class BooksController < ApplicationController
def index
@books = Book.all
# @books はビュー(index.html.erb)で使えるようになる
end
end
Book.all はモデル book.rb の Book クラスを呼び出している。
@books はビューに渡されて、HTML上で表示される。
3. モデル app/models/book.rb
class Book < ApplicationRecord
#books テーブルとつながっている
end
Book クラスはデータベースの books テーブルと連動している。
4. ビュー app/views/books/index.html.erb
<h1>本の一覧</h1>
<ul>
<% @books.each do |book| %>
<li><%= book.title %></li>
<% end %>
</ul>
コントローラーで定義した @books をループ処理して、各本の title をリスト表示する。
✅ クラス・変数のつながり対応表
| ファイル名 | 主なクラス/変数 | 連携先ファイル | 対応関係 |
|-----------------------------------|----------------------------------|-----------------------------|------------------------------------------------|
| `config/routes.rb` | `'books'`, `'index'` | `books_controller.rb` | URLルートがコントローラーのメソッドに対応 |
| `app/controllers/books_controller.rb` | `BooksController`, `@books`, `Book.all` | `book.rb`, `index.html.erb` | モデルとビューの橋渡し |
| `app/models/book.rb` | `Book` | `books_controller.rb` | データベースの処理担当(モデル) |
| `app/views/books/index.html.erb` | `@books`, `book.title` | `books_controller.rb` | コントローラーから受け取ったデータを表示 |