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")
        %>
        <label for="booking_agent">The Agent for this Booking is
: </label>
        <%= 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 : </label>
        <!-- setup the default currency for the first pass //-->
        <%= select(''booking'', ''currency'',
Currency.currency_options, {
:selected => 2 }) %>
    </div>
    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 %>
    <input type="hidden" id="booking_currency"
name="booking[currency]"
value="<%= @currencies.
first.currency_id %>" />
    <label for="booking_currency">Agent only accepts
<%@currencies.first.iso_code %> </label>
<% else %>
    <label for="booking_currency">Which Currency should this
Booking be
made in : </label>
    <select id="booking_currency"
name="booking[currency]">
        <option value="" selected="selected">Please
Select One</option>
        <% for currency in @currencies do -%>
            <option value="<%= currency.id %>"><%=
currency.iso_code
%></option>
        <% end -%>
    </select>
<% 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)
Dark Ambient wrote:> Updating this thread. First is 3 days on the same problem unusual or
> an indication not to give up my day job ?
>
> Okay, I''m still trying to do a dynamic drop down based on user
choice
> in first select.
> I came across this post -
> http://www.ruby-forum.com/topic/61521
> and translating to my setup , so far it''s not working , then again
no
> errors in log or debug.
>
> First, I have two tables/model  ''pay'' with an id and
name, and wage
> with an id, pay_id, and name.
>
> When user choose pay, I want to take the id of the pay selection and
> update, or load partial from wage select.
>
> Using the example above I created the following files:
>
> #view
> <p><label for="pay">Pay Type</label><br/>
> <select id="pay[id] name="pay[id]">
>   <%= options_from_collection_for_select(
>    Pay.find_all, "id", "name") %>
> </select></p>
>
> <span id="wage_list">
> <label for="wage">Wage specifics</label><br/>
>   <select id="wage[pay_id]"
name="wage[pay_id]"></select>
> </span>
>
> <%= observe_field("pay[id]",
>     :frequency  => 0.0,
>     :update => "wage_list",
>     :url => {:action => :fill_wages},
>     :with => "''wage[pay_id]=''+value") %>
>
> #controller method
>   def fill_wages
>     @lookups = Lookup.find_all_by_list_prompt(@params[:wage], :order
> => ''pay_id'')
>     render  :partial => ''wagespecs''
>   end
>
> I also created _wagespecs though Im not entirely sure what goes in
> there since the example above didn''t show it .
>
> Anyone give me some help on this ?
> Stuart
>
>
> On 9/10/06, Dark Ambient
<sambient-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
>   
>> I''m working on setting up a form where one element gets
updated
>> depending on what value was checked in another element.  Sadly though
>> I''m not sure exactly what to do with my controller action and
if i''ll
>> need to depend on form_tag_remote. I do want the element updated
>> before submit so probably not needing the form_tag call.
>>
>> So far my view looks like this:
>>
>> <%>> @pays = Pay.find(:all, :order => "id").map
{|p| [p.name, p.id] }
>> select(:pay, :name, @pays) %>
>>
>> <span id="wagespec"><%>> @wages =
Wage.find(:all, :order => "id").map {|p| [p.name, p.id] }
>> select(:wage, :name, @wages, {},{:disabled => true}) %>
>> </span>
>>
>> <%= observe_field("pay[id]",
>>   :frequency => 0.25,
>>   :update => "wagespec",
>>   :url => {:action => :get_wages},
>>   :with => "''pay_id=''+value")
>> %>
>>
>> So I need to create an action called get_wages that will enable and
>> update @wages.  Are there special calls to accomplish this ?
>>
>> TIA
>> Stuart
>>
>>     
>
> >
>
>   
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk
-~----------~----~----~----~------~----~------~--~---