RubyOnRails-コントローラの作成

RubyOnRails-コントローラの作成

Railsコントローラは、ユーザーからのリクエストを受け取り、モデルを使って必要なデータを集め、ビューを使い利用者へ返す結果を作成する役割を担います。


コントローラの作成

コントローラ作成は以下のコマンドを実行します。


rails generate controller コントローラ名

コントローラを作成すると「ApplicationController」クラスを継承し、「コントローラ名+Controller」のクラスが定義されます。


class コントローラ名Controller < ApplicationController
  ...
end

コントローラを作成する時にアクションを同時に作成することができます。

以下の書式を使います。


rails generate controller コントローラ名 アクション名1 アクション名2 ...

アクション

アクションとは、コントローラ内に定義されたであり、ユーザーからのリクエストによって呼び出される処理になります。

コントローラはクラスとして定義されましたが、アクションはクラスの中のメソッドとして定義します。


アクションの作成

Railsアプリケーションではコントローラはクラスとして定義し、アクションはコントローラクラスの中のメソッドとして定義します。

アクションとなるメソッドはpublicのメソッドとして定義します。


なお、編集ファイルの文字コードは必ず「UTF-8」とすることが決まり事となります。

Rubyソースコードのファイル先頭には「# coding: utf-8」を定義して、文字コードを明示する必要があります。


$ cat app/controllers/cmn_ctrl_controller.rb
# coding: utf-8
class CmnCtrlController < ApplicationController
  def show
    render :text => 'test message!'
  end 
end

ルーティングの設定

ルーティングは、ユーザ側からどのように呼び出されたときにどのアクションを実行するのかを定義するものです。

設定は「config\routes.rb」ファイルに定義します。


$ cat config/routes.rb
Cmn::Application.routes.draw do
  match 'show' => 'cmn_ctrl#show'
end

renderについて

Railsではアクションが呼び出された場合、必ず何かしらの結果をユーザへ返します。

その際、ビューに該当するテンプレートを利用して出力結果を作成します。

特に指定しない場合、アクションが利用するテンプレートが呼び出されます。


app/views/コントローラ名/アクション名.html.erb

テンプレート

デフォルトテンプレートではなく別のテンンプレートを呼び出すには、明示的にテンプレート指定します。

自コントローラ内のアクション用テンプレートや別コントローラ内のアクション用テンプレートを呼び出す場合、以下の構文を用います。


render :action => 'アクション名'
render 'アクション名'
render :template => 'コントローラ名/アクション名'
render 'コントローラ名/アクション名'

テキスト出力

テキストを出力する場合には以下の構文を用います。


render :text => 'テキスト'

ステータスコード

任意のステータスコードを返すことができます。


render :text => 'テキスト', :status => 404
render :nothing => true, :status => 403

なにも表示しない

基本的に、ユーザからのリクエストに対してコントローラは必ず何かを返す必要があります。

結果を何も表示しない場合には以下の構文を用います。

スタータスコード「200」を返します。


render :nothing => true


関連ページ