Class | CGIKit::Element |
In: |
docs/rdoc_ja.rb
|
Parent: | Object |
CGIKit::Elementは動的にHTMLを表示するオブジェクトの抽象クラスです。 サブクラスにはエレメント (DynamicElementなど) や コンポーネント (Component) があります。
リクエストを受け取ってからレスポンスを返すまでに、次のメソッドが順に実行されます。 Elementでは、メソッド定義以外何も実装していません。 サブクラスを作るには、最低限append_to_responseをオーバーライドしてください。
これらのメソッドは、ループ間に生成される エレメント・コンポーネントに対して順に実行されます。 例えば MainPage のリンク (Link) をクリックして NextPage を表示する場合、次の順に各メソッドが実行されていきます。
(MainPageを表示する)
(MainPageのリンクをクリックし、NextPageを表示する)
リクエスト・レスポンスループの前後に、 コンテキストID (Context) を操作する次のメソッドが実行されます。
ループ間では、各エレメント・コンポーネントにコンテキストIDが割り振られます。 (コンテキストIDはループの各メソッドを実行するたびに生成されます) このコンテキストIDとリクエストに含まれたコンテキストIDが一致すれば、 エレメント・コンポーネントが操作の対象ということになります。
例えばLink#invoke_actionでは、コンテキストIDが一致すれば、 クリックされたリンクが現在処理中のオブジェクトということになり、 コンポーネントの指定されたメソッドを実行します。 TextField#take_values_from_requestでは、 自身のコンテキストIDと一致するフォームデータを取得し、 コンポーネントのインスタンス変数に代入します。
このコンテキストIDを調整するため、上記のメソッドでコンテキストIDを操作します。 ただし、ComponentのサブクラスではコンテキストIDを操作する必要はありません。
コンテキストIDを操作するルールは次の通りです。
associations | [RW] | バインディング (Association) の設定のハッシュ。 |
name | [RW] | バインディングで設定されたエレメント名。 |
node | [RW] | テンプレートを構成するノード。 |
エレメントの属性を組み合わせるルール (API) を返します。 属性を正しく設定しないと例外を発生します。 最初に呼ばれるとき、create_apiを呼んで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から オブジェクトとメソッドを特定し、メソッドを実行します。 ResponseかComponentのインスタンスを返す必要があります。 このクラスの実装では何もせず、nil を返します。
See Also: take_values_from_request, append_to_response
リクエスト・レスポンスループの最初に呼ばれます。 フォームデータを取得してオブジェクトの状態を変更したり、 コンポーネントの各インスタンス変数に代入します。 このクラスの実装では何もしません。
See Also: invoke_action, append_to_response