はじめに
最近railsを本格的に使うようになりました。
基本アクションに沿ったページ作成ができるとデータ取得などが非常にやりやすいということを痛感しています。
そこで、各アクションがどのような用途で使われているのか違いを認識し適切なものが使えるように説明していきたいと思います。
作成
new
アクション
-
役割: 新しいリソースを作成するためのフォームを表示するアクションです。
create
アクションとセットで使用されることが多く、ユーザーが入力フォームにアクセスできるようにします。 -
詳細:
-
URLパターン:
/users/new
,/posts/new
-
動作:
User.new
で空のインスタンスを作成し、フォームに渡す。ビューにはフォームヘルパーを使って、フォームのフィールドが表示されます。 -
例:
def new @user = User.new end
-
URLパターン:
create
アクション
- 役割: 新しいリソースをデータベースに作成するためのアクションです。フォームから送信されたデータを受け取り、新しいユーザーや投稿、商品を作成します。
-
詳細:
-
URLパターン: POSTリクエストで呼び出され、一般的に
/users
,/posts
などのエンドポイントに対応します。 -
動作:
User.new(user_params)
などを使用して新しいインスタンスを生成し、save
メソッドでデータベースに保存します。 -
例:
def create @user = User.new(user_params) if @user.save redirect_to @user else render :new end end
-
URLパターン: POSTリクエストで呼び出され、一般的に
情報一覧
index
アクション
- 役割: 複数のリソースを一覧表示するためのアクションです。たとえば、全ユーザーや全投稿、全プロダクトのリストを表示する際に使用します。
-
詳細:
-
URLパターン:
/users
,/posts
-
動作:
User.all
などのクエリを使用して、データベースから全レコードを取得し、ビューでリスト表示します。 -
例:
def index @users = User.all end
-
URLパターン:
search
アクション(カスタムアクション)
-
役割: 特定の条件でリソースを検索するアクションです。標準のCRUDに含まれないカスタムアクションとして、
index
アクションに検索機能を追加する際によく使われます。 -
詳細:
-
URLパターン:
/users/search
,/posts/search
- 動作: フォームから送信された検索条件に基づいて、リソースをフィルタリングし、結果を表示します。
-
例:
def search @users = User.where("name LIKE ?", "%#{params[:query]}%") end
-
URLパターン:
詳細情報
show
アクション
- 役割: 単一のリソースの詳細情報を表示するためのアクションです。特定のユーザーや投稿、商品などの詳細ページに使用します。
-
詳細:
-
URLパターン:
/users/:id
,/posts/:id
-
動作:
User.find(params[:id])
などを用いて、特定のIDに対応するレコードを取得し、ビューでその詳細を表示します。 -
例:
def show @user = User.find(params[:id]) end
-
URLパターン:
情報編集
edit
アクション
-
役割: 既存のリソースを編集するためのフォームを表示するアクションです。
update
アクションとセットで使用され、ユーザーがリソースの情報を更新できるようにします。 -
詳細:
-
URLパターン:
/users/:id/edit
,/posts/:id/edit
-
動作:
User.find(params[:id])
で対象のレコードを取得し、フォームに表示するためのインスタンス変数に渡します。 -
例:
def edit @user = User.find(params[:id]) end
-
URLパターン:
update
アクション
- 役割: 既存のリソースのデータを更新するためのアクションです。ユーザーのプロフィール情報の更新や投稿内容の修正などに使用します。
-
詳細:
-
URLパターン: PATCHリクエストで呼び出され、
/users/:id
,/posts/:id
などのエンドポイントに対応します。 -
動作:
User.find(params[:id])
で対象のレコードを取得し、update
メソッドを用いてフィールドを更新します。 -
例:
def update @user = User.find(params[:id]) if @user.update(user_params) redirect_to @user else render :edit end end
-
URLパターン: PATCHリクエストで呼び出され、
destroy
アクション
- 役割: リソースを削除するためのアクションです。不要になったユーザーアカウントや投稿を削除する場合に使用します。
-
詳細:
-
URLパターン: DELETEリクエストで呼び出され、
/users/:id
,/posts/:id
などのエンドポイントに対応します。 -
動作:
User.find(params[:id])
で対象のレコードを取得し、destroy
メソッドで削除します。 -
例:
def destroy @user = User.find(params[:id]) @user.destroy redirect_to users_path end
-
URLパターン: DELETEリクエストで呼び出され、
まとめ
この記事では、Railsの基本的なアクションであるindex, show, new, create, edit, update, destroy、そしてカスタムアクションのsearchについて説明しました。これらのアクションを適切に理解し使い分けることで、効率的にアプリケーションを構築できます。
皆さんが基本的なアクションを使いこなすための一助となれば幸いです。
ここまで読んでいただきありがとうございます。