ホーム > JavaScript, Ruby > ActiveScaffoldのAJAXフォーム上にあるコンボボックス2つを親子連携させる

ActiveScaffoldのAJAXフォーム上にあるコンボボックス2つを親子連携させる

 タイトルに書いたことを実現するのに、Railsだとobserve_fieldっていうのを使うと楽勝なんだけど、これがActiveScaffoldで動的ロードするFormにあるコンボボックスだと、AJAXでロードする情報のなかにJavaScriptを書くことになってしまい動かないっていう罠。

 AJAXのレスポンスをinnerHTMLにぶち込んでごにょごにょとかそういう話もググれたんだけど、ActiveScaffoldだけにその辺自由度なく微妙。

 そこで苦肉の策として、Helperに「連動元コンボボックスのカラム名_form_column(record, field_name)」メソッドをオーバーライドしてSELECTタグを上書きしつつ、onchangeイベントでコンボボックスの中身をJavaScriptで強制書き換えするっていう何ともいえない香ばしい方法で対処する。

 ActiveScaffoldのドキュメントのそれっぽいところには「send_form_on_update_column」とかいかにもなメソッドがあるんだけど、悲しいかな 2.4以降に実装予定ということみたいだ。

 いやActiveScaffold超便利なんですけどね。用意された枠内でやってる分には。

このエントリーをはてなブックマークに追加
はてなブックマーク - ActiveScaffoldのAJAXフォーム上にあるコンボボックス2つを親子連携させる
Share on Facebook
Bookmark this on Delicious
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip

カテゴリー: JavaScript, Ruby タグ: , ,
  1. コメントはまだありません。
  1. トラックバックはまだありません。