examples_controller
ファイル名 | 説明 |
---|---|
index.rb | コントローラ使用のためのエントリポイント。 |
hello/index.rhtml | ビュー。webブラウザに送信するHTMLを生成するための雛形です。 |
hello/main.rb | コントローラ。webブラウザからの要求に対するアクションが定義されています。 |
ライブラリ名 | 説明 |
---|---|
al_controller | コントローラクラス。コントローラアプローチで開発を行うために必要。 |
al_template | テンプレートマネージャ。レスポンスとしてwebブラウザに送信するためのHTMLを生成します。 |
Aloneのコントローラアプローチによるプログラムのサンプルです。各種処理を行うコントローラと、webブラウザに送るHTMLの雛形を定義するテンプレートに別れています。
エントリポイントファイル index.rb と同一ディレクトリにあるディレクトリ hello は、コントローラおよび関連するテンプレートなどを格納するためのディレクトリです。ディレクトリ名がそのままコントローラ名として扱われます。
コントローラは、コントローラ名に対応するディレクトリの中に main.rb というファイル名で作成します。その中でAlControllerクラスにメソッドを追加することでコントローラのアクションを追加することができます。アクションに対応するメソッドは、名前が action_ で始まります。本サンプルでは action_index メソッドをAlControllerクラスに追加することで、indexという名称のアクションを追加しています。
なお、indexという名称のアクションはデフォルトアクションと呼ばれ、URLでアクション名を指定せずにコントローラを呼び出した場合はデフォルトアクションが実行されます。
require 'al_template' # # # class AlController # # デフォルトアクションの定義 # def action_index() @my_message = "Hello world." AlTemplate.run( 'index.rhtml' ) end end
AlTemplete.runメソッドを実行することで、あらかじめ定義されたテンプレートindex.rhtmlに従ってHTMLを生成しクライアントに返しています。
インスタンス変数 @my_message にセットした文字列 "Hello world." は、テンプレートファイル index.rhtml 内で参照されます。
アプリケーションからwebブラウザに送信されるHTMLを生成するための雛形です。コントローラ内のアクションでAlTemplate.runを呼び出すと、テンプレートにしたがってHTMLが生成されます。
<%= header_section %> <title>Test</title> <%= body_section %> <p><%=h @my_message %></p> <%= footer_section %>
コントローラ内で宣言したインスタンス変数の値が参照できます。本サンプルでは main.rb 内の index アクションで値がセットされている @my_message 変数を参照しています。これにより、 @my_message に格納された値がHTMLに埋め込まれます。
これらのメソッドは、HTMLのヘッダ部、ボディ部、フッタ部で使われる汎用的なHTMLを出力するものです。テンプレートの記述を簡単にできます。出力されるHTMLは、 Alone の設定ファイル al_config.rb 内で定義されています。
もちろん、これらのメソッドを使わずに、直接テンプレート内にヘッダ部などのHTMLを記述してもかまいません。