プルダウンを連動させる
よくあるフォームの中に、
県をプルダウンから選ぶと、その県の市町村が表示される、
というようなものがある。
これを、railsで再現する。
1.viewの編集
<%= select :record, :pref,["北海道","青森","岩手","山形"] %>
<%= select :record, :city,["県を選んでください"] %>
<%= observe_field(:record_pref,
:update => :record_city,
:on => 'change',
:url => { :action => :live_search }) %>
まず、県を選ぶプルダウンメニュー(id:record_pref)、市町村を選ぶプルダウンメニュー(id:record_city)を作成し、
observe_fieldで、record_prefの選択を監視し、何らかの値が選択された時点でrecord_cityを書き換える。
書き換えるためのメソッド(URL)を指定しておく
2.controllerを編集
viewでrecord_prefを選択した際に、live_searchというメソッドで処理するように設定したので、live_searchというメソッドを追加する。
def live_search
hokkaido=["札幌","旭川","函館","苫小牧"]
aomori=["青森","八戸"]
iwate=["盛岡"]
yamagata=["山形"]query = request.raw_post
case query
when "北海道" then
params[:city]=hokkaido
when "青森" then
params[:city]=aomori
when "岩手" then
params[:city]=iwate
when "山形" then
params[:city]=yamagata
else
params[:city]=["異常です"]
endrender :partial=>"city"
end
record_prefに対応する配列を作っておき、record_prefの内容によってparams[:city]の中身を切り替える。
最後に部分テンプレート「_city.rhtml」を使って結果を表示する
3._city.rhtmlの作成
_city.rhtmlでparams[:city]をselectタグのoption valueに展開する
<%= options_for_select(params[:list]) %>
以上で、プルダウンを動的に変更できるようになる。
ただし、上記内容については未検証。(cotroller部分が微妙)
« モンベルのマット | トップページ | postgresqlにtsv(csv)ファイルのデータを登録する »
「ruby/rails」カテゴリの記事
- acts_as_paranoid(2008.04.01)
- ActiveScaffoldで表示するレコードを設定する(2008.03.31)
- ActiveCalendarの入力フォーマットを変える(2008.03.24)
- ActiveScaffoldListFilters(2008.03.21)
- Activescaffoldでdate/datetimeをカレンダーで入力する(2008.03.21)
コメント