0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Rails学習】ルーティング・モデル・コントローラー・ビューの連携まとめ

Posted at

✅ 全体構成図(リクエストの流れ)

[ ブラウザ ]
     ↓(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`       | コントローラーから受け取ったデータを表示     |
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?