« Viewクラスの改造 | トップページ | 100 BOOKLEs for "Education for All" »

2007/10/01

他のテーブルを読み込んでリストボックスから選択できるようにする

今回もまた自作Web用フレームワークの解説です。前回予告した、「データのリンク」の前にちょっとやっておく事として思いついたので、今回はそれをテーマに書いておきます。

データの編集において、定型の入力項目は選択式にしておきたいと誰もが思うものです。しかし、Webにおいて、その選択項目をHTMLで書いたのでは頻繁な追加・変更・削除があまり簡単ではありません。

ここで使用するのが「html.rb」内にある

make_select_form_without_key(name, values, default)
です。 これは、nameにSELECフォームの名前、valuesに配列、defaultに初期選択項目の値を入れておくと、SELECTフォーム用のHTMLを返してくれるというものなので、データベースから必要な項目を読み込んで、この関数に入れてあげれば、選択フォームの完成というわけです。

ということで、Controlクラスに下記のメソッドを追加しました。

  def get_select_from_by_field(name, default)
    
    values = @mdl.get_column("name")
    html = make_select_form_without_key(name, values, default)
    return html
    
  end

そして、Booksクラスでcustomize_edit_valuesメソッドを上書きし、SELECTフォームを表示するよう指定します。

  def customize_edit_values(values)
    ctg = BookCategorys.new()
    tmp = values["category"]["val"]
    values["category"] = {
      "type" => "select", 
      "val" => ctg.get_select_from_by_field("category", tmp) }
    return values
  end

以上で、選択フォームが表示されるようになるはずです。

実はこれらの作業の前に、データベースのbooksテーブルへ分類を記録するためのテーブルとして「category」という名前のフィールドを一つ追加しておく必要があります。説明が遅れましたが、追加していなくても選択項目は表示されるし、きちんと動くでしょう。ただ、設定しても記録されないだけ...なはずです。

しかし、実はこの操作で選択フォームを表示できるようにするには、内部で大幅な変更がありました。「紹介していない部分だからいいかな」と判断したのですが、意外とクラス作成の胆になる部分だったかもしれない...

また、全ソースコードをダウンロードできるようにしておくので、興味のある方は覗いてみて下さい。
「きちんとそれぞれのクラスを解説してくれ!」とかいう要望があれば、そういう方向で記事を書いてみようと思いますが、まだそういう要望は無いようなので、しばらく自作Webフレームワークの利用方法を解説していきたいと思います。

「framework3.zip」をダウンロード

上記で紹介したコードのサンプルサイトです。

書籍

|

« Viewクラスの改造 | トップページ | 100 BOOKLEs for "Education for All" »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/79953/16636168

この記事へのトラックバック一覧です: 他のテーブルを読み込んでリストボックスから選択できるようにする:

« Viewクラスの改造 | トップページ | 100 BOOKLEs for "Education for All" »