selectボックスとAjax
mixi とかでプロフィールを入力すると、都道府県をselectボックスから選ぶとそのとなりの市郡selectボックスが変わります。mixiの場合はAjaxじゃないんだけど、RoR+Ajaxでやってみたくて調べてみました。
とりあえず「Rails' Wiki - gdvfhfmb」この辺とか参考にしてみて、observe_fieldを使うんじゃないかとアタリをつけてみました。もちろん今回は、selectボックスで都道府県を選んだらというのが条件なので、:frequencyで監視時間を設定するようなやり方ではダメ。こういうときは、:onを使うことが判明しました。↓こんな感じ
<%= observe_field(:pref_id, { :update => :city_id, :on => 'change', :url => { :action => :cities }}) %>
pref_idというidを持つselectボックスで都道府県を選ぶと、city_idというidを持つタグにcitiesアクションの結果が流し込まれます。
で、実際pref_idで選んだ値をとってみようとすると、ここで行き詰まります。「Rails' Wiki - gdvfhfmb」に書いてある例では、ここでいうpref_idで選んだ値をどうやって取得するのか書いていないのですね。実は、pref_idで選んだ値は、@paramsのキーになってしまっています。なので取得するのが大変なのです! これを解決するには以下のようにやればよいのでした。
<%= observe_field(:pref_id, { :update => :city_id, :on => 'change', :url => { :action => :cities }, :with => "'pref_id'=+value"}) %>
これでめでたく@params["pref_id"]で値を取得できるようになるのでありました。