Controller(コントローラー)を使う (2/8)
作成:2012-01-16 08:05
更新:2012-01-16 08:05
更新:2012-01-16 08:05
■Controllerの作成について
とはいえ、一度にこれら全部についてまとめて覚えるのはちょっと大変ですね。そこで、不要なものを使わなくていいようにして、1つずつ順番に使っていくことにしましょう。
先ほどの必要性を考えるなら、まず最初に使い方を覚えなければいけないのは「Controller」です。ですから、Controllerだけを使い、ModelとViewを使わずに済ませることにしましょう。
Viewは、レンダリング時に使わないようにすることができますが、問題は、Modelです。RailsのModelでは、「Active Record」という機能が用意されており、これにより自動的にデータベースを扱えるようにしてくれるのですが、逆にこのActive Recordのおかげで、標準の状態では「Modelまでセットで用意しないと動かない」というような仕組みになっているのです。
今回、とりあえずModelを使わず、ControllerとViewだけ(といっても、Viewも今回は使いませんが……)でRailsアプリを作成してみますが、これは通常の開発スタイルではありません。
注意すべきは、「これはローカルのテストサーバーでしか動かない」という点です。Herokuにデプロイしても動かないのです。Herokuは内部にPostgreSQLを持っており、デプロイされたRailsアプリのデータベース関連の部分を自動的に内部PostgreSQLを利用するように変更しているようです。
Heroku以外のサーバーでは、Railsの一部を修正することでModelなしで動かすことが可能なところもありますが、原則として「RailsはMVCすべてが一式揃って動くのが基本」と考えてください。
(※また、Herokuで動作しないため、eXo IDEによるオンラインIDEベースの開発の説明は省略します)
では、Controller(コントローラー)を作成しましょう。MVCの各パーツ類の作成は、ターミナルから「rails」コマンドを実行して行います。これは以下のように実行します。
名前の後に、「アクション」というものを記述することができます。これは、そのControllerに用意できるさまざまな処理を実行するためのものです。
Railsでは、1つ1つのページごとにControllerを作るわけではありません。例えば、あるデータベースのテーブルを使ったアプリを考える場合、そのテーブルのデータを表示したり、データを追加したり、削除や編集をするなど、いくつものページが必要となるでしょう。これらをすべて別々のControllerとして作成するのはけっこう面倒ですね。
そこでRailsでは、Controllerの中にアクションというものを用意し、このアクションでそれぞれのページの処理を行うようになっています。あるテーブルを利用するアプリであれば、そのControllerの中に、テーブルを表示するアクション、新たに追加するアクション、削除するアクション……というように、テーブル利用のための基本的な操作をそれぞれアクションとしてまとめるのです。Controllerは1つだけで、その中に役割ごとにアクションが作成される、というわけです。
rails generate controllerでは、Controllerの名前の後に、作成するアクションの名前を記述します。これは必要に応じていくつでも記述することができます。こうすることで、複数のアクションをまとめて用意することができるわけです。
先ほどの必要性を考えるなら、まず最初に使い方を覚えなければいけないのは「Controller」です。ですから、Controllerだけを使い、ModelとViewを使わずに済ませることにしましょう。
■Modelを使わないことは可能?
Viewは、レンダリング時に使わないようにすることができますが、問題は、Modelです。RailsのModelでは、「Active Record」という機能が用意されており、これにより自動的にデータベースを扱えるようにしてくれるのですが、逆にこのActive Recordのおかげで、標準の状態では「Modelまでセットで用意しないと動かない」というような仕組みになっているのです。
今回、とりあえずModelを使わず、ControllerとViewだけ(といっても、Viewも今回は使いませんが……)でRailsアプリを作成してみますが、これは通常の開発スタイルではありません。
注意すべきは、「これはローカルのテストサーバーでしか動かない」という点です。Herokuにデプロイしても動かないのです。Herokuは内部にPostgreSQLを持っており、デプロイされたRailsアプリのデータベース関連の部分を自動的に内部PostgreSQLを利用するように変更しているようです。
Heroku以外のサーバーでは、Railsの一部を修正することでModelなしで動かすことが可能なところもありますが、原則として「RailsはMVCすべてが一式揃って動くのが基本」と考えてください。
(※また、Herokuで動作しないため、eXo IDEによるオンラインIDEベースの開発の説明は省略します)
■Controller作成のコマンド
では、Controller(コントローラー)を作成しましょう。MVCの各パーツ類の作成は、ターミナルから「rails」コマンドを実行して行います。これは以下のように実行します。
rails generate controller 名前 アクション1 アクション2 ……Controllerは、「rails generate controller」というコマンドで作成できます。その後に、作成するControllerの名前を記述することで、その名前のControllerが作成されます。
名前の後に、「アクション」というものを記述することができます。これは、そのControllerに用意できるさまざまな処理を実行するためのものです。
Railsでは、1つ1つのページごとにControllerを作るわけではありません。例えば、あるデータベースのテーブルを使ったアプリを考える場合、そのテーブルのデータを表示したり、データを追加したり、削除や編集をするなど、いくつものページが必要となるでしょう。これらをすべて別々のControllerとして作成するのはけっこう面倒ですね。
そこでRailsでは、Controllerの中にアクションというものを用意し、このアクションでそれぞれのページの処理を行うようになっています。あるテーブルを利用するアプリであれば、そのControllerの中に、テーブルを表示するアクション、新たに追加するアクション、削除するアクション……というように、テーブル利用のための基本的な操作をそれぞれアクションとしてまとめるのです。Controllerは1つだけで、その中に役割ごとにアクションが作成される、というわけです。
rails generate controllerでは、Controllerの名前の後に、作成するアクションの名前を記述します。これは必要に応じていくつでも記述することができます。こうすることで、複数のアクションをまとめて用意することができるわけです。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
※関連コンテンツ