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】ルーティング、コントローラ、ビューまとめ

Last updated at Posted at 2024-12-19

ポートフォリオ作成に入り、複数形で書くのか単数形で書くのか
そもそもこのファイル名はどこから来てるんだっけ…と
まだRailsのルーティング、コントローラ、ビューの違いを理解できていないところがあるのでまとめてみます。


1. ルーティング

# [例1]
get 'about', to: 'homes#about', as: 'about'

# [例2]
post 'users', to: 'users#create' 

ルーティング.png

[例1]

  • HTTPメソッド:
    GET(データを取得)
  • 対応するURL:
    /about
    URLの最後の/about部分を生成しているのは、get 'about' の about部分。
    /aboutのURLにアクセスしたらhomes#aboutアクションを実行する。
  • as: 'about'部分は、名前付きルート
    これによってabout_pathというヘルパーメソッドが生成される。
  • コントローラのアクション:
    HomesControllerabout アクションを実行する。
    コントローラは基本的に複数形で書く。

[例2]

  • HTTPメソッド:
    POST(データを送信)
  • 対応するURL:
    /users
    URLの最後の/users部分を生成しているのは、post 'users'users部分。
    /usersのURLにアクセスしたらusers#createアクションを実行する。
  • コントローラのアクション:
    UsersControllercreate アクションを実行する。
    コントローラは基本的に複数形で書く。

HTTPメソッドとは

Webブラウザ・クライアントがサーバーにリクエストを送る際に、「どのような処理を要求しているか」を指定する手段。

メソッド 役割・用途 具体例
GET サーバーからデータを取得するためのリクエスト。 Webページを表示する、画像やファイルを取得するなど。
POST サーバーにデータを送信して新しいリソースを作成するためのリクエスト。 フォームの送信、新規ユーザー登録、投稿作成など。
PUT サーバー上の既存データを更新するためのリクエスト。 ユーザー情報の更新、記事の編集など。
PATCH サーバー上のデータの一部を部分的に更新するためのリクエスト。 一部のフィールドだけ更新する場合。
DELETE サーバー上のデータを削除するためのリクエスト。 記事やユーザー情報の削除など。
HEAD GETと同様にリソースを取得しますが、ヘッダー情報のみ取得し、ボディは取得しないリクエスト。 リソースが存在するか確認する際など。
OPTIONS サーバーが対応しているHTTPメソッドや設定可能なオプションを確認するためのリクエスト。 APIの事前検証などに利用される。

名前付きルート(as: 'about'部分)とは

URLにアクセスするためのヘルパーメソッド(about_pathなど)を生成する仕組み。
ビューでリンクに使用したり…

<!-- 名前付きルートあり -->
<%= link_to '概要へ', about_path %>
<%= link_to '編集画面へ', edit_user_path(user.id) %>

<!-- なし -->
<%= link_to '概要へ', '/about' %>
<%= link_to '編集画面へ', "/users/#{user.id}/edit" %>

コントローラでリダイレクト先のパスを簡単に書ける。

# 名前付きルートあり
redirect_to about_path
redirect_to edit_user_path(user.id)

# なし
redirect_to '/about'
redirect_to "/users/#{user.id}/edit"

ヘルパーメソッドはどうやって決まるのか?

1.「as」を使わない場合
asを使わないと、アクション名とリソース名で決まる。

# ルーティング
resources :users

# 生成されるヘルパーメソッド
users_path        # GET /users
new_user_path     # GET /users/new
edit_user_path    # GET /users/:id/edit
user_path         # GET /users/:id

resources :usersで生成されるルーティングとヘルパーメソッド

アクション HTTPメソッド URL ヘルパーメソッド 説明
index GET /users users_path ユーザー一覧ページを表示する。
new GET /users/new new_user_path 新しいユーザーの作成フォームを表示する。
show GET /users/:id user_path(:id) 特定のユーザーの詳細を表示する。
create POST /users users_path 新しいユーザーを作成する(フォーム送信)。
edit GET /users/:id/edit edit_user_path(:id) 特定のユーザーの編集フォームを表示する。
update PATCH/PUT /users/:id user_path(:id) 特定のユーザーの情報を更新する。
destroy DELETE /users/:id user_path(:id) 特定のユーザーを削除する。

2.「as」を使った場合
ヘルパーメソッドの名前を自分で指定できる。
「as:の後に書いたもの+_path」となる。

# ルーティング
get 'about', to: 'homes#about', as: 'about'
get 'about', to: 'homes#about', as: 'aaa'

# 生成されるヘルパーメソッド
about_path  # 自動生成されるヘルパーメソッド名
aaa_path  # 自動生成されるヘルパーメソッド名

2. コントローラ

コントローラの命名規則

  • フォルダ:
    app/controllers(どのコントローラも共通でここに置かれる)
  • ファイル名:
    リソース名+複数形_controller.rb

[例1] GETリクエスト

  • ファイル名:
    homes_controller.rb
    (コントローラはリソース名を複数形にした名前 + _controller)
    コントローラは基本的に複数形で書く。
class HomesController < ApplicationController
  def about
  end
end

[例2] POSTリクエスト

  • ファイル名:
    users_controller.rb
    (コントローラはリソース名を複数形にした名前 + _controller)
    コントローラは基本的に複数形で書く。
class UsersController < ApplicationController
  def create
    # ユーザーの作成処理
    @user = User.new(user_params)
    if @user.save
    else
      render :new
    end
  end
end

リソース名とは

リソース名は、Railsにおいて「操作対象となるモデルやデータ」を指す。それは何のデータなのか?を表している。
例: userspostscommentsなど。

リソース名は、基本的に複数形で使用され、コントローラやルーティングに反映される。

  • モデル: User(単数形)
  • コントローラ: UsersController(複数形)
  • ルーティング: resources :users(複数形)
  • ビュー: users/index.html.erb(複数形)

3. ビュー

ビューの命名規則

  • フォルダ:
    リソース名+複数形(view/usersなど)
  • ファイル名:
    アクション名.html.erb

[例1]

ビューのファイル名: homes/about.html.erb

[例2]

ビューのファイル名: users/create.html.erb


4. モデル

モデルの命名規則

  • ファイル名
    ファイル名、データベースのテーブル名、クラス名すべて
    「リソース名の単数形」

例:

  • モデル名:User(単数形)
  • ファイル名:user.rb(単数形)
  • クラス名:class User < ApplicationRecord(単数形)

[例2] モデル(Userモデル)

# app/models/user.rb
class User < ApplicationRecord
  # バリデーションや関連付けなど
  validates :name, presence: true
end
  • モデルは基本的に単数形で書く。
    • ファイル名: user.rb(単数形)
    • クラス名: class User < ApplicationRecord(単数形)

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?