Class CGIKit::Element
In: docs/rdoc_ja.rb
Parent: Object

CGIKit::Elementは動的にHTMLを表示するオブジェクトの抽象クラスです。 サブクラスにはエレメント (DynamicElementなど) や コンポーネント (Component) があります。

リクエスト・レスポンスループ

リクエストを受け取ってからレスポンスを返すまでに、次のメソッドが順に実行されます。 Elementでは、メソッド定義以外何も実装していません。 サブクラスを作るには、最低限append_to_responseをオーバーライドしてください。

これらのメソッドは、ループ間に生成される エレメント・コンポーネントに対して順に実行されます。 例えば MainPage のリンク (Link) をクリックして NextPage を表示する場合、次の順に各メソッドが実行されていきます。

(MainPageを表示する)

  1. MainPage#take_values_from_request
  2. CGIKit::Link#take_values_from_request
  3. MainPage#invoke_action
  4. CGIKit::Link#invoke_action
  5. MainPage#append_to_response
  6. CGIKit::Link#append_to_response

(MainPageのリンクをクリックし、NextPageを表示する)

  1. MainPage#take_values_from_request
  2. CGIKit::Link#take_values_from_request
  3. MainPage#invoke_action
  4. CGIKit::Link#invoke_action #<< ここでNextPageを返す
  5. NextPage#append_to_response

コンテキストIDの操作

リクエスト・レスポンスループの前後に、 コンテキストID (Context) を操作する次のメソッドが実行されます。

ループ間では、各エレメント・コンポーネントにコンテキストIDが割り振られます。 (コンテキストIDはループの各メソッドを実行するたびに生成されます) このコンテキストIDとリクエストに含まれたコンテキストIDが一致すれば、 エレメント・コンポーネントが操作の対象ということになります。

例えばLink#invoke_actionでは、コンテキストIDが一致すれば、 クリックされたリンクが現在処理中のオブジェクトということになり、 コンポーネントの指定されたメソッドを実行します。 TextField#take_values_from_requestでは、 自身のコンテキストIDと一致するフォームデータを取得し、 コンポーネントのインスタンス変数に代入します。

このコンテキストIDを調整するため、上記のメソッドでコンテキストIDを操作します。 ただし、ComponentのサブクラスではコンテキストIDを操作する必要はありません。

コンテキストIDのルール

コンテキストIDを操作するルールは次の通りです。

(begin_context)

(end_context)

  • 増やした数値はそのままにしておく
  • 桁を増やしたなら削除する (Context#delete)

デリゲート

CGIKit::Delegate::ElementDelegate

Methods

Included Modules

Logging Delegatable

Classes and Modules

Class CGIKit::Element::AttributeError
Class CGIKit::Element::UnknownElementError

Attributes

associations  [RW]  バインディング (Association) の設定のハッシュ。
name  [RW]  バインディングで設定されたエレメント名。
node  [RW]  テンプレートを構成するノード。

Public Class methods

エレメントの属性を組み合わせるルール (API) を返します。 属性を正しく設定しないと例外を発生します。 最初に呼ばれるとき、create_apiを呼んでAPIオブジェクトを生成します。

APIオブジェクトを生成します。

すべてのサブクラスを返します。

Public Instance methods

APIオブジェクトを返します。

リクエスト・レスポンスループ中、invoke_action() の次に呼ばれます。 HTMLを生成し、レスポンスに追加します。 このクラスの実装では何もしません。

See Also: take_values_from_request, invoke_action

リクエスト・レスポンスループの始まる前に呼ばれます。 コンテキストIDの準備をします。 このクラスの実装では、コンテキストIDの最後の数字を増やします。

See Also: end_context

ノードが他の要素を含まなければ真を返します。

リクエスト・レスポンスループの終了後に呼ばれます。 コンテキストIDの終了処理を行います。 このクラスの実装では何もしません。

See Also: begin_context

リクエスト・レスポンスループ中、take_values_from_request() の次に呼ばれます。 URLに含まれるセッションIDとコンテキストIDから オブジェクトとメソッドを特定し、メソッドを実行します。 ResponseComponentのインスタンスを返す必要があります。 このクラスの実装では何もせず、nil を返します。

See Also: take_values_from_request, append_to_response

リクエスト・レスポンスループの最初に呼ばれます。 フォームデータを取得してオブジェクトの状態を変更したり、 コンポーネントの各インスタンス変数に代入します。 このクラスの実装では何もしません。

See Also: invoke_action, append_to_response

[Validate]