ウィジェットは、動的に追加・削除が可能です。
アクションごとに必要なパラメータが変わる場合は、この方法によって動的にウィジェットを増減させて対応します。
追加
@form.add_widget( AlText.new( "fax", :label=>"ファックス" ) )
削除
@form.delete_widget( "fax" )
コンストラクタで作成したフォームから、そのアクションに必要な最小限のフォームを再構成する場合は、以下の方法が使えます。
def initalize() @form = AlForm.new( AlText.new( "first_name", :label=>"名" ), AlText.new( "family_name", :label=>"姓" ), AlText.new( "address", :label=>"住所" ), AlText.new( "tel", :label=>"電話" ), ) end def action_index() # 名,姓のみのフォームを再構成 list = [ :first_name, :family_name ] @form = AlForm.new( list.map! { |k| @form.widgets[k] } ) ...