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
関連ページ
- Ruby
- RubyOnRails-概要
- RubyOnRails-アプリケーションの作成
- RubyOnRails-コントローラの作成
- RubyOnRails-ビューの作成
- RubyOnRails-データベースの作成
- RubyOnRails-モデルの作成
- RubyOnRails-マイグレーション
- RubyOnRails-Scaffold