observe
オブザーバ にてユーザの入力を検知してAjaxを動作させることができます。
前田さんの「RailsによるアジャイルWebアプリケーション開発」では、P.391に解説があります。
speakillofさんのRails' Wiki - AjaxOnRails
http://wiki.fdiary.net/rails/?cmd=view&p=AjaxOnRails&key=ajax
の記事もとても参考になります。
リストボックスの選択を検知して次のリストボックスの選択肢を決めたいケースは結構頻出しますが、やっと実装^^
最初の表示 ここで種別を選択
<%= select('kind', 'kind_id', Kind.find_all.collect {|kind| [ kind.name, kind.id ] }, { :include_blank => true }, :id=> :sel_kind) %> <%= observe_field(:sel_kind, :frequency => 0.5, :update => :sel_org, :url => { :controller => 'org', :action => 'selorg' }) %> <div id="sel_org" ></div>
org_controller.rbのメソッド
# 組織種別による組織選択 def selorg @kind = request.raw_post || request.query_string @orgs = Org.find(:all, :conditions =>["org_kind_id = ?", @kind]) render(:layout => false) end
selorg.rhtml ここで組織を選択
<%= select('hoge', 'org_id', @orgs.collect {|org| [ org.name, org.id ] }, { :include_blank => true }) %>