require 'al_template'
class HelloController < AlController
def action_index()
@my_message = "Hello world."
AlTemplate.run("./index.rhtml")
end
end
<%= header_section %>
Test
<%= body_section %>
<%=h @my_message %>
<%= footer_section %>
エディターを使って、コントローラを書き換えます。
@my_message = "Hello another world."
次のURLで実行確認します。
http://localhost:3000/index.rb?ctrl=my_hello
{{:prog_cgi:hw_my_hello.png?nolink|}}
===== 解説 =====
このプログラムでは、Aloneのコントローラとテンプレートの2種類の機能を使っています。
プログラムは、ウェブブラウザからのアクセス(リクエスト)をトリガーに開始されます。
ブラウザのURLで指定されたパラメータをもとに、どのプログラムのどのメソッドを動作させるべきかがAlone側で決定され、実行されます。
この場合は、my_hello ディレクトリに置かれた main.rb の、action_index メソッドが呼ばれます。これらAloneのルーティングに関する詳細は、「[[alcgi:コントローラ|AlController コントローラ]]」の項を参照してください。
呼ばれた action_index メソッドでは、変数 @my_message へ、"Hello another world." 文字列を代入します。
そして、テンプレートマネージャを呼び出して、htmlを生成しています。
テンプレートマネージャでは、引数で与えられたテンプレートファイル、および @で始まるインスタンス変数の内容などから、ブラウザに返すhtmlの完全なセットを生成します。
生成されたhtmlはブラウザに返され、ブラウザがそれを解釈して画面に表示します。
テンプレートに関する詳細は、「[[altemplate:start|AlTemplate テンプレート]]」の項を参照してください。
===== エラーの検出 =====
コードの文法エラーなどがあった場合は、Aloneが検出してエラー画面を表示します。
例えば、以下のように、''THIS_IS_ERROR!'' という行を追加します。
require 'al_template'
class HelloController < AlController
def action_index()
THIS_IS_ERROR!
@my_message = "Hello world."
AlTemplate.run("./index.rhtml")
end
end
これを実行すると、ブラウザにはエラー検出した旨の画面が表示されます。
{{:prog_cgi:error_display.png?400|}}
エラー理由やバックトレース等が表示され、どこでバグが発生したかがひとめでわかります。いにしえのCGI開発のように、''Internal Server Error'' しか表示されず困り果てるということはありません。