フィールドを監視してselectの値を動的に変える(observe_field)

こんにちわ〜
今回はobserve_fieldを使用してselectフィールドの値を変化させる方法について書いてゆきますかね。

まずはviewでこんな感じにobserve_fieldを使う

view
  <%= select_tag :select_data,options_for_select(@category_options)  %>
   <%= observe_field(:select_data,               #監視するフィールド
      :frequency => 0.25,
      :update => :change_field,   #更新するフィールド
      :with => "select_value",    #params[:select_value]に値が入る
      :url => { :action => :live_search }) %> #呼び出すアクション
   <%= select_tag :change_field,options_for_select(@subcategory_options)  %> #更新対象のフィールド

次にlive_searchアクションでparams[:select_value]から値を取得。
適当に加工してlive_searchビューに渡す!ここでは@subcategory_optionsを渡すことにしましたよっと。


live_search.rhtml

  <%= options_for_select(@subcategory_options)  %>

これでいけます。





ちなみにform_forの場合

 <% form_for :article,@article,:url =>{:action => 'articles_create'},:html => {:multipart => true }  do |form| %>
            
   カテゴリ<%= form.select :select_data,@options %>
   <%= observe_field("article_select_data",
      :update => "article_change_field",
      :with => "option_value",
      :url => { :action => :live_search }) %>
   サブカテゴリ<%= form.select :change_field,@suboptions %>

 

こんな風なフィールド名の指定をしないとだめ。