Pages

2010年11月27日土曜日

[Rails3]jQueryでobserve_field的なことを。

Rails3において、セレクトボックスの連動をしたくなりました。
よく見かける「都道府県-市町村」が連動しているものです。

今まで(Rails2の時)にはそんなことをしようとも思わなかったので
かなり苦戦しました。

新しくなったRails3ではjavascriptの扱い方
が変更になったようです。

今回はjquery-railsを使いjQueryを使える状態にしてあることを
前提にしています。
((view))hoge.html.erb
<%= f.label :prefecture_id %> <%= f.select :prefecture_id, Prefecture.all.collect {|u| [ u.name, u.id]} %>
<%= f.label :city %>
更新スペース
((controller))hoge.rb def city_select @cities = City.where("ken_code = ? AND id > ?", params[:pref_id], params[:pref_id] + "100") render end ((public))application.js $(function(){ $('#prefecture_id').change(function(){ var pref_id = $("#prefecture_id").val(); $.get("city_select?pref_id=" + pref_id); }); }); ((js.erb))city_select.js.erb $("#city_id").html("<%= escape_javascript(render :partial => 'select_city', :pref_id => params[:pref_id]) %>"); select_city.html.erb <% ここにselect要素の処理を書く %>

非常に分かりにくい説明で申し訳ないのですが、どうやらプルダウンの変更のキャッチは
javascript側で行うようです。ですのでjavascriptの知識も少々必要になりそうな予感です。
javascriptはpublicのapplication.jsに記述しています。

0 件のコメント: