最近のトラックバック

Twitter

楽天

« モンベルのマット | トップページ | postgresqlにtsv(csv)ファイルのデータを登録する »

プルダウンを連動させる

よくあるフォームの中に、
県をプルダウンから選ぶと、その県の市町村が表示される、
というようなものがある。

これを、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]=["異常です"]
    end

    render :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」カテゴリの記事

コメント

コメントを書く

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

トラックバック


この記事へのトラックバック一覧です: プルダウンを連動させる:

« モンベルのマット | トップページ | postgresqlにtsv(csv)ファイルのデータを登録する »

2018年10月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
無料ブログはココログ