Controller(コントローラー)を使う (5/8)
作成:2012-01-16 08:13
更新:2012-02-16 15:03
更新:2012-02-16 15:03
■Controllerクラスについて
続いて、今回作成したheloのControllerである「helos_controller.rb」ファイルをチェックしましょう。
Controllerを作成すると、このように「コントローラー名_controller.rb」という名前のスクリプトファイルが作成されます。ここにControllerのスクリプトが記述されます。
このファイルには、「HelosController」というクラスが定義されています(下のリスト欄を参照)。これが、Controllerの本体です。このクラスは、整理すると以下のような形で記述されます。
作成したControllerのクラス内には、アクションで呼び出されるメソッド類が定義されます。先ほどrailsコマンドを実行した時、helosには「index」というアクションを用意しておきました。クラスを見ると、indexというメソッドが用意されていることがわかるでしょう。
こうしてControllerに対応したクラスを用意し、その中にアクションに対応するメソッドを定義する――これが、「Controllerを作る」ということなのです。
これまでの説明からもわかるように、Railsでは「設定より規約」が重視されます。「このControllerのスクリプトはこのファイル」といったことを設定ファイルに書いておく、というような作り方はしません。「このControllerはこういう名前のファイルで用意する決まりにする。それにしたがって用意すれば、後は勝手に認識して動く」というやり方がRails流です。決まった形でファイルやクラス、メソッドを用意することで、自動的にそれらが認識され呼び出されるようになっているのです。
ですから、作成されたファイル名や、記述されているクラスの名前を勝手に変更したりしてはいけません。そうすると途端に動かなくなったりしますから注意してください。
Controllerを作成すると、このように「コントローラー名_controller.rb」という名前のスクリプトファイルが作成されます。ここにControllerのスクリプトが記述されます。
このファイルには、「HelosController」というクラスが定義されています(下のリスト欄を参照)。これが、Controllerの本体です。このクラスは、整理すると以下のような形で記述されます。
class コントローラー名Controller < ApplicationControllerControllerのクラスは、先ほどのApplicationControllerクラスを継承して作成します。重要なのは、クラス名です。クラスの名前は必ず「コントローラー名Controller」としなければいけません。
def アクション名
……このアクションの処理……
end
……必要なだけメソッドを定義する……
end
作成したControllerのクラス内には、アクションで呼び出されるメソッド類が定義されます。先ほどrailsコマンドを実行した時、helosには「index」というアクションを用意しておきました。クラスを見ると、indexというメソッドが用意されていることがわかるでしょう。
こうしてControllerに対応したクラスを用意し、その中にアクションに対応するメソッドを定義する――これが、「Controllerを作る」ということなのです。
●Railsは「設定より規約」の世界
これまでの説明からもわかるように、Railsでは「設定より規約」が重視されます。「このControllerのスクリプトはこのファイル」といったことを設定ファイルに書いておく、というような作り方はしません。「このControllerはこういう名前のファイルで用意する決まりにする。それにしたがって用意すれば、後は勝手に認識して動く」というやり方がRails流です。決まった形でファイルやクラス、メソッドを用意することで、自動的にそれらが認識され呼び出されるようになっているのです。
ですから、作成されたファイル名や、記述されているクラスの名前を勝手に変更したりしてはいけません。そうすると途端に動かなくなったりしますから注意してください。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
※helos_controller.rbのソースコード class HelosController < ApplicationController def index end end
※関連コンテンツ