初心者向けRuby on Railsコントローラー入門 – コード例と解説

当サイトでは一部リンクに広告が含まれています
programming

Ruby on Rails は、Web アプリケーション開発において人気の高いフレームワークの一つです。

Rails には、MVC(Model-View-Controller)アーキテクチャが採用されており、そのうちのコントローラーについて解説します。

目次

コントローラーとは?

コントローラーは、ユーザーからのリクエストを受け取り、モデルとビューを組み合わせてレスポンスを返します。

つまり、Rails のコントローラーは、アプリケーションのロジックを処理する場所であり、主にユーザーの操作に対するレスポンスを返すために使用されます。

コントローラーの作成

Rails において、コントローラーを作成するためには、rails generate controller コマンドを使用します。

例えば、Posts モデルのコントローラーを作成する場合は、以下のコマンドを実行します。

rails generate controller Posts

このコマンドを実行すると、app/controllers/posts_controller.rb ファイルが作成されます。
このファイルには、以下のようなコードが含まれます。

class PostsController < ApplicationController   def index   end end

これは、Posts コントローラーの最小限のコードであり、index アクションが定義されています。
このアクションは、app/views/posts/index.html.erb ビューファイルを表示することができます。

アクションとルーティング

コントローラーには、複数のアクションを定義することができます。
アクションは、HTTP リクエストに応じて実行されます。

例えば、以下のようなコントローラーを考えてみましょう。

class UsersController < ApplicationController   def index     @users = User.all   end   def show     @user = User.find(params[:id])   end   def new     @user = User.new   end   def create     @user = User.new(user_params)     if @user.save       redirect_to users_path     else       render 'new'     end   end   private   def user_params     params.require(:user).permit(:name, :email)   end end

このコントローラーには、index、show、new、create の 4 つのアクションが定義されています。

index アクションは、すべてのユーザーを取得して@users 変数に代入します。show アクションは、指定された ID のユーザーを取得して@user 変数に代入します。

new アクションは、新しいユーザーを作成するための空の@user オブジェクトを作成します。

create アクションは、送信されたフォームデータを使って新しいユーザーを作成し、成功した場合は users_path にリダイレクトします。
一方、失敗した場合は、new テンプレートを再度表示します。

ルーティング

アクションには、URL に対応するルーティングが必要です。
これは、config/routes.rb ファイルで定義されます。

例えば、以下のようなルーティングを定義することができます。

Rails.application.routes.draw do   resources :users end

このルーティングは、/users に対するすべての HTTP リクエストを、UsersController のアクションにルーティングします。

ビュー

コントローラーは、ビューを組み合わせてレスポンスを返します。
ビューは、HTML や ERB などのテンプレートエンジンを使用して記述されます。

例えば、app/views/users/index.html.erb ファイルは、UsersController の index アクションから呼び出されるビューです。

<h1>Users</h1> <ul>   <% @users.each do |user| %>     <li><%= link_to user.name, user_path(user) %></li>   <% end %> </ul> <%= link_to 'New User', new_user_path %>

このビューは、すべてのユーザーをリストアップし、各ユーザーの名前をクリックすると show ページに遷移するようになっています。

また、新しいユーザーを作成するためのリンクもあります。

まとめ

コントローラーは、アプリケーションのビジネスロジックを実装する重要な役割を持っています。

また、コントローラーは、ルーティングとビューと密接に関連しており、アプリケーション全体の構造に大きく影響します。

目次