Hello “Dark” (strange first name, but, hey, thats what makes the world
go round* 
I do something similiar to what your asking, except I use Agent’s
and their currency. The quirk comes that if an agent only has one
currency, then it shouldn’t even offer a select box, but rather default
to the single currency. Here is how I do it, you can take from it what
you want (or not, your choice ;);
views/booking/new.html
<p/>
<% agent_change_ajax = remote_function(:update => :currencyList,
:url => { :controller => 'agent', :action =>
:list_currency_ajax_search },
:with => “‘agentid=’+value”)
%>
The Agent for this Booking is :
<%= select(‘booking’, ‘agent’, Agent.default_quickbook_options,
{ :selected => 2828 }, { :onchange => agent_change_ajax }) %>
<p/>
<div id="currencyList">
<label for="booking_currency">Which Currency should this Booking
be made in :
<%= select(‘booking’, ‘currency’, Currency.currency_options, {
:selected => 2 }) %>
controllers/agent_controller.rb
def list_currency_ajax_search
myAgent = Agent.find(params['agentid'])
@currencies = myAgent.currency # obtained by the model Agent
having a relation to currencies
render(:layout=>false,:partial => ‘list_currency_ajax_search’)
end
views/agent/_list_currency_ajax_search.rhtml
<% if @currencies.size == 1 %>
Agent only accepts <%=
@currencies.first.iso_code %>
<% else %>
Which Currency should this Booking be
made in :
Please Select One
<% for currency in @currencies do -%>
<%= currency.iso_code
%>
<% end -%>
<% end %>
Hopefully, you should get an idea of what to do from this. I would
say having an ‘onchange’ is better than having a constantly polling
observer, but, I am not 1000% sure that observe_field does what I think
it does. Eh. ymmv '
Regards
Stef
(* apparently so does ; love, money, sex and rock n roll)