Hi,
I’ve just started toying with Rails and AJAX, so forgive me if this is a
bit of a stupid question. I’m trying to populate a select field when the
value of another select field is changed. Looking through the API doc,
it seems like observe_field is what I need.
In my view I have:
Country
<%= select 'wine', 'country_id', @countries.collect {|c| [c.name, c.id]}
%>
<%= observe_field 'wine_country_id', :url => { :controller =>
'countries', :action => 'regionOptions' }, :update => 'wine_region_id',
:with => '"id="+value' %>
Region
<%= select 'wine', 'region_id', @wine.country.regions.collect {|r|
[r.name, r.id]} %>
My intention is that the wine_region_id select is populated by the
result of the AJAX request initiated by changing the wine_country_id
select value. Here is the controller and view code for handling that
request:
def regionOptions
@country = Country.find(params[:id])
end
<%= options_from_collection_for_select @country.regions, “id”, “name” %>
This looks like it is working OK, returning the option tags I expect.
However, when the wine_region_id select is repopulated only a single
text node containing the concatenated option display text is put in it.
What am I doing wrong?
Any pointers to the stupid newbie mistake I’ve made would be greatly
appreciated.
Thanks,
Geoff