Ruby on RailsのControllerの使い方【初心者向け】

Railsでアプリケーションを作る上で大事なController。初心者向けのControllerの使い方を解説しています。どんなコマンドを使うのか、どのような表示になるのか実際に使いながら理解していきましょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が1,000以上あります。

RailsのControllerの使い方についての記事です。

Controllerとは、Ruby on Railsでアプリケーションを作成する上で非常に重要な用語です。

この記事では、Controllerという用語と実際にどのように使うのか解説していきます。

 

なお本記事は、TechAcademyのWebアプリケーションオンラインブートキャンプの内容をもとに紹介しています。

 

Controllerとは

Controllerの役割を説明するために、ユーザーがrailsアプリケーションで作られたサービスにアクセスしてきたときのリクエストの流れを説明したいと思います。

ユーザーがブラウザ経由でrailsアプリケーションにリクエストを送ると、そのリクエストがControllerに渡されます。

すると、Controllerはリクエストの内容に応じてモデルにデータを取ってくるように命令したり、データを作成・更新するように命令します。

その後、モデルが実行したデータに関する処理結果を受け取ってビューに渡して画面が表示されるのです。
このようにControllerとはモデルとビューの仲介をする役割を担っており、railsアプリケーションの中核をなすともいえます。

 

もう少し具体的な例で説明します。

例えば、ユーザーがあるSNSで「Ruby on Rails」についての投稿を検索するとします。
そうすると次のような流れで処理が実行されていきます。

  1. Controllerに「Ruby on Rails」についての投稿を検索したいというリクエストが来る
  2. Controllerはモデルに対して「Ruby on Rails」についての投稿のデータを取るように命令する
  3. モデルが取ってきたデータをControllerが受け取り、ビューに渡す
  4. ビューは受け取ったデータを画面上に表示する

 

実際にControllerを作ってみよう

これから実際にControllerを作成していきます。

サンプルとして「Hello, World!!」と表示するControllerを作ってみます。

まずは、サンプルアプリケーションを作成していくので、次のコマンドを実行してください。

rails new sample_app
cd sample_app

これでサンプルアプリケーションの準備が整いました。

Controllerファイルを作ろう

Controllerの作成をするコマンドの書式は次の通りです。

rails generate controller コントローラー名

今回はhello_controllerを作成したいと思います。コマンドは次のようになります。

rails generate controller hello

generate_controller-620x300

実行結果をみると「app/controllers/hello_controller.rb」が作成されています。

これでControllerを作成することができたので、次にHelloControllerに「Hello, World!!」と表示する処理を書いていきます。

テキストエディタで「app/controllers/hello_controller.rb」を開いて以下のコードを記述しましょう。

class HelloController < ApplicationController
def index
render text: 'Hello, World!!'
end
end

「index」アクションを追加して、renderメソッドで「Hello, World!!」を出力するようにしています。
これでHelloControllerのindexアクションにリクエストが来たら、「Hello, World!!」がブラウザ上に表示されるようになります。

ルーティングの設定をしよう

Controllerを作るだけではちゃんと動作をしません。どんなURLでアクセスが来たらHelloControllerのindexアクションを使うのかを設定する必要があります。

これをルーティングの設定といいます。

「config/routes.rb」ファイルに次のコードを追加してください。

Rails.application.routes.draw do
get 'hello' => 'hello#index'
end

これで「http://ドメイン/hello」というurlでリクエストが来たときはHelloControllerのindexアクションを使いますという設定をしています。

実際にブラウザで表示してみよう

作ってみたサンプルアプリケーションを起動してブラウザで開いたときに「Hello, World!!」と表示されるのか確認してみましょう。

次のコマンドでサンプルアプリケーションを起動させます。

rails server

起動したら「http://localhost:3000/hello」にアクセスしてみてください。

controller_hello_world-620x206

ちゃんと「Hello, World!!」と表示されているのがわかると思います。

今回はControllerの説明だったのでモデルを作成しないサンプルでしたが、このようにControllerとは、アプリケーションの処理の中核をなす役割を担っていることがわかったと思います。

以上、Railsで使うControllerの説明でした。

[お知らせ]TechAcademyでは初心者でも8週間でエンジニアになれるRuby on Railsオンラインブートキャンプを開催しています。RubyでWebアプリを開発したい方はご参加ください。