ポートフォリオ作成に入り、複数形で書くのか単数形で書くのか
そもそもこのファイル名はどこから来てるんだっけ…と
まだRailsのルーティング、コントローラ、ビューの違いを理解できていないところがあるのでまとめてみます。
1. ルーティング
# [例1]
get 'about', to: 'homes#about', as: 'about'
# [例2]
post 'users', to: 'users#create'
[例1]
-
HTTPメソッド:
GET
(データを取得) -
対応するURL:
/about
URLの最後の/about部分を生成しているのは、get 'about' の about部分。
/about
のURLにアクセスしたらhomes#aboutアクションを実行する。 -
as: 'about'
部分は、名前付きルート
これによってabout_path
というヘルパーメソッドが生成される。 -
コントローラのアクション:
HomesController
のabout
アクションを実行する。
コントローラは基本的に複数形で書く。
[例2]
-
HTTPメソッド:
POST
(データを送信) -
対応するURL:
/users
URLの最後の/users
部分を生成しているのは、post 'users'
のusers
部分。
/users
のURLにアクセスしたらusers#create
アクションを実行する。 -
コントローラのアクション:
UsersController
のcreate
アクションを実行する。
コントローラは基本的に複数形で書く。
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において「操作対象となるモデルやデータ」を指す。それは何のデータなのか?を表している。
例: users
、posts
、comments
など。
リソース名は、基本的に複数形で使用され、コントローラやルーティングに反映される。
- モデル: User(単数形)
-
コントローラ: User
s
Controller(複数形) -
ルーティング: resources :user
s
(複数形) -
ビュー: user
s
/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
(単数形)
-
ファイル名: