Setup:
I have 3 drop downs generated by collection_select, where in the next
drop down’s option values are dependent on which option value was
selected in the previous drop down. This is done using observe_field.
e.g.
country => state => city
Here’s the code:
%div
.label
Grading Scheme Select - Tier 1
= collection_select (:grading_scheme, :id, GradingScheme.all, :id,
:name)
= observe_field(‘grading_scheme_id’, :update => ‘parent_div’,
:frequency => 0.5, :url => {:controller => ‘grading_schemes’, :action =>
‘filter_parents’}, :with => ‘grading_scheme_id’)
%div
.label
Tier 2
#parent_div
= collection_select (:grade_layer, :id, @parents, :id, :name)
= observe_field(‘grade_layer_id’, :update => ‘child_div’, :frequency
=> 0.5, :url => {:controller => ‘grading_schemes’, :action =>
‘filter_children’}, :with => ‘id’)
%div
.label
Tier 3
#child_div
= collection_select (:grade_layer, :id, @children, :id, :name)
Initially the observe_field would work on updating child_div (Tier
3)whenever I select a different item in Tier 2. If I select a grading
scheme in Tier 1, Tier 2 will update its list. However if i select a new
item in that updated list in Tier 2, Tier 3 will not update.
I’ve checked my local server, and during those occassions that Tier 3
doesn’t update i find that ajax isn’t producing any calls. I hope
someone can help me out on this.