フィールドを監視して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 %>
こんな風なフィールド名の指定をしないとだめ。