Controller(コントローラー)を使う (7/8)
作成:2012-01-16 08:17
更新:2012-02-16 15:05
更新:2012-02-16 15:05
■renderメソッドの働き
今回、indexメソッドで行なっているのは、非常に単純なことです。「render」というメソッドを実行しているだけなのです。このメソッドは、名前からもわかるように、Webページのレンダリングを行うものです。ここでは以下のように記述されていますね。
ここで使った:textは、Webページに表示するテキストを指定するものです。つまり、render :text=>〇〇 というように実行することで、:textに指定したテキストをWebページとして表示させることができる、というわけです。
MVCの説明で述べたように、Controllerのアクションでは、それぞれのアクションに対応するViewのテンプレートを読み込んでレンダリングするのが一般的です。が、これはつまり「アクションメソッドを終了したら、Railsのシステムがrenderメソッドで指定のテンプレートを読み込みレンダリングして表示するようになっている」といってよいでしょう。したがって、このようにメソッド内にrenderを用意して手動でレンダリングを行なってやれば、Viewの利用はされず、プログラマが独自に用意した内容をWebページとして出力することができます。
■# coding: utf-8 について
もう1つ、サンプルコードで忘れてはならないのが、一番最初にある「# coding: utf-8」という文です。これはテキストのエンコーディングを指定するものです。なぜ、これが付けられているのかといえば、サンプルで日本語を出力しているからです。
Railsでは、日本語を扱う場合にはUTF-8でエンコードされる必要があります。このため、スクリプトの冒頭にこの一文を入れておきます。……実を言えば、テストサーバーではこれがなくても問題なく動いてくれたりしますが、本サイトにアップロードしたらこの指定がないと日本語部分で必ずエラーになりますので、今からきちんと記す習慣をつけましょう。
――とりあえず、「Controllerクラスにアクションメソッドを用意し、そこにrenderを用意すれば、テキストをWebページとして出力できる」ということはわかりました。まだControllerクラスの詳細はわかりませんが、とりあえず基本的な使い方がわかっただけでも良しとしましょう。いろいろと表示内容を変えて試してみてください。
render :text=>テキストrenderの後にある「:text」というのは、メソッドで指定されるオプションです。Railsの多くのメソッドにはこうしたオプションが用意されており、各種の値をメソッドに引き渡すことができます。
ここで使った:textは、Webページに表示するテキストを指定するものです。つまり、render :text=>〇〇 というように実行することで、:textに指定したテキストをWebページとして表示させることができる、というわけです。
MVCの説明で述べたように、Controllerのアクションでは、それぞれのアクションに対応するViewのテンプレートを読み込んでレンダリングするのが一般的です。が、これはつまり「アクションメソッドを終了したら、Railsのシステムがrenderメソッドで指定のテンプレートを読み込みレンダリングして表示するようになっている」といってよいでしょう。したがって、このようにメソッド内にrenderを用意して手動でレンダリングを行なってやれば、Viewの利用はされず、プログラマが独自に用意した内容をWebページとして出力することができます。
■# coding: utf-8 について
もう1つ、サンプルコードで忘れてはならないのが、一番最初にある「# coding: utf-8」という文です。これはテキストのエンコーディングを指定するものです。なぜ、これが付けられているのかといえば、サンプルで日本語を出力しているからです。
Railsでは、日本語を扱う場合にはUTF-8でエンコードされる必要があります。このため、スクリプトの冒頭にこの一文を入れておきます。……実を言えば、テストサーバーではこれがなくても問題なく動いてくれたりしますが、本サイトにアップロードしたらこの指定がないと日本語部分で必ずエラーになりますので、今からきちんと記す習慣をつけましょう。
――とりあえず、「Controllerクラスにアクションメソッドを用意し、そこにrenderを用意すれば、テキストをWebページとして出力できる」ということはわかりました。まだControllerクラスの詳細はわかりませんが、とりあえず基本的な使い方がわかっただけでも良しとしましょう。いろいろと表示内容を変えて試してみてください。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
※helos_controller.rbのソースコード # coding: utf-8 class HelosController < ApplicationController def index msg = "<html><body><h1>Hello</h1><p>こんにちは!</p></body></html>" render :text => msg end end
※関連コンテンツ