クイックリファレンス

Rails コントローラー チートシート

Rails コントローラーのクイックリファレンス:params、session、cookies、flash メッセージ、before_action フィルター、リダイレクト、レスポンス描画。

· 公開日

Action Controller は Rails の MVC において司令塔の役割を果たし、受信した HTTP リクエストを処理してモデルを照会し、ビューや JSON を描画します。

リクエストパラメータと特殊な Hash

# パラメータ(クエリ文字列、リクエストボディ、ルーティングセグメント)
params[:id]
params.require(:user).permit(:name, :email)

# セッションストレージ
session[:user_id] = user.id

# Flash 通知メッセージ
flash[:notice] = "Welcome back!"     # 次のリクエスト時に表示
flash.now[:alert] = "Invalid password" # 現在のレンダリング時に即時表示
flash.keep                            # Flash の値をさらに次のリクエストまで保持

# クッキー管理
cookies[:theme] = "dark"
cookies.signed[:user_id] = user.id
cookies.permanent[:remember] = token

コールバック (before_action)

class ArticlesController < ApplicationController
  before_action :authenticate_user!
  before_action :set_article, only: [:show, :edit, :update]
  skip_before_action :authenticate_user!, only: [:index, :show]

  private

  def set_article
    @article = Article.find(params[:id])
  end
end

レンダリングとリダイレクト

# リダイレクト処理
redirect_to root_path, notice: "Saved successfully!"
redirect_to article_path(@article)

# テンプレート描画と JSON / XML 出力
respond_to do |format|
  format.html # Renders articles/show.html.erb
  format.json { render json: @article }
  format.xml  { render xml: @article }
end

# HTTP ステータスコードと空レスポンス
render :new, status: :unprocessable_entity
head :no_content

参考リンク

関連テーマ