====== ハローワールド ====== ===== 概要 ===== webブラウザに "Hello world." と表示されるアプリケーションです。 {{:samples:hello_index.png|}} ===== パス ===== examples_controller ===== 構成ファイル ===== ^ ファイル名 ^ 説明 ^ | index.rb | コントローラ使用のためのエントリポイント。 | | hello/index.rhtml | ビュー。webブラウザに送信するHTMLを生成するための雛形です。 | | hello/main.rb | コントローラ。webブラウザからの要求に対するアクションが定義されています。 | ===== 使用ライブラリ ===== ^ ライブラリ名 ^ 説明 ^ | al_controller | コントローラクラス。コントローラアプローチで開発を行うために必要。| | al_template | テンプレートマネージャ。レスポンスとしてwebブラウザに送信するためのHTMLを生成します。 | ===== 詳細 ===== Aloneのコントローラアプローチによるプログラムのサンプルです。各種処理を行うコントローラと、webブラウザに送るHTMLの雛形を定義するテンプレートに別れています。 ==== hello/main.rb (コントローラ) ==== エントリポイントファイル 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 === action_indexメソッド === AlTemplete.runメソッドを実行することで、あらかじめ定義されたテンプレートindex.rhtmlに従ってHTMLを生成しクライアントに返しています。 インスタンス変数 @my_message にセットした文字列 "Hello world." は、テンプレートファイル index.rhtml 内で参照されます。 ==== hello/index.rhtml (テンプレート) ==== アプリケーションからwebブラウザに送信されるHTMLを生成するための雛形です。コントローラ内のアクションでAlTemplate.runを呼び出すと、テンプレートにしたがってHTMLが生成されます。 <%= header_section %> Test <%= body_section %>

<%=h @my_message %>

<%= footer_section %>
=== インスタンス変数の参照 === コントローラ内で宣言したインスタンス変数の値が参照できます。本サンプルでは main.rb 内の index アクションで値がセットされている @my_message 変数を参照しています。これにより、 @my_message に格納された値がHTMLに埋め込まれます。 === header_secion, body_section, footer_section === これらのメソッドは、HTMLのヘッダ部、ボディ部、フッタ部で使われる汎用的なHTMLを出力するものです。テンプレートの記述を簡単にできます。出力されるHTMLは、 Alone の設定ファイル al_config.rb 内で定義されています。 もちろん、これらのメソッドを使わずに、直接テンプレート内にヘッダ部などのHTMLを記述してもかまいません。