Hernan,

Thank you. It works fine now. The state namings you pointed out, need
to specifically be:

 <select id="record_state_" name="record[state]">

and I added the other two methods to my controller:

def new
     setstateslist
     super
   end

   def edit
     setstateslist
     super
   end

et voila! -Janna B.

On Jun 15, 10:42 am, Hernan Astudillo <[email protected]> wrote:
> this is wrong:
>  <select id="state" name="state">*
>
> *name (and id) should be in AS style, which is very similar (if not same) to
> RoR standard format of naming object attributes in a form. Take a look at
> finder.rb in AS. It explains in more detail. (PS: i think that should be in
> the wiki)
> so, you may use name="record_state_id"
> *
> *besides, you could do everything from
> # /views/customers/_state_form_column.html.erb
> much less code and simpler in a helper, with something like this:
>
> def state_form_column(record, input_name)
>     if not @state.nil?
>        select record[:state], @states, :prefix => input_name
>     else
>        text_field record, :state, { :size=> 30, class=>"state-input
> text-input",  :prefix => input_name}
>    end
> end
>
> the "selected" property is set automagically by RoR's select helper:
>
> http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelp...
>
> now, for the update_states, don't know how to render from a helper, but, how
> about taking a look at form_column_chaining?
>
> hope that helps,
>
> On Mon, Jun 15, 2009 at 9:24 AM, JannaB <[email protected]> wrote:
>
> > I almost have this perfected for AS, using the Carmen plugin nad
> > partial overrides for forms in AS. When someone picks a country, the
> > list of possible states to select from appears. If the current
> > record's country select box is the same as the record's, it gets that
> > record's state selected (if there is one) as well. It works
> > marvelously.
>
> > The ONLY problem, is that it doesn't update the state when the form
> > appears (i.e. in Edit or Create mode). One must first change the
> > country selected (then, often, change it back to what it initially
> > came up as) to invoke the proper state selections. Can someone please
> > tell me from my code below how to accomplish this -- I think this will
> > be a nice amendment to this group in case anyone ever does a search on
> > country & state. -Janna B.
>
> > # /views/customers/_state_form_column.html.erb
> > <p>
> > <dl class="" id="states">
> > <dt>
> > <label for="record_state_">State</label>
> > </dt>
> > <dd>
> >  <% if @states !=nil %>
> >        <% if @customer!=nil && @customer.state!=nil %>
> >                <% s = @customer.state.strip %>
> >        <% end %>
> >      <select id="state" name="state">
> >        <option></option>
> >        <% for state in @states %>
> >                <option value="<%= state[1] %>"
> >                <% if state[1]==s  %>
> >                        selected="selected"
> >                <% end %>
>
> >                <%= state[0] %></option>
> >        <% end %>
> >      </select>
> > <% else %>
> >        <input type="text" size="30" name="record[state]" maxlength="255"
> > id="record_state_" class="state-input text-input" autocomplete="off"/
>
> > <% end %>
> > </dd>
> > </dl>
>
> > # /views/customers/_country_form_column.html.erb
> > <p>
> > <dl class="">
> > <dt>
> > <label for="record_country_">Country</label>
> > </dt>
> > <dd>
> >  <% @customer == nil || @customer.country == nil ? s =
> > Carmen::country_name(Carmen.default_country) : s =
> > @customer.country.strip %>
> >   <%= country_select :record, :country, [s], {},
> >    {
> >      :onChange => remote_function( :url => { :action =>
> > 'update_states' }, :update => "states", :with => "'country=' +value")
> >    } %>
> > </p>
> > </dd>
> > </dl>
>
> > #And finally, my controller:
> > class CustomersController < ApplicationController
>
> >  active_scaffold :customer do |config|
> >       ...
> >     end
>
> >  ..
>
> >   def update_states
> >      setstateslist
> >      render :partial => 'state_form_column'
> >    end
>
> >   def setstateslist
> >        q = params[:country]
> >     if q==nil
> >       if params[:id] != nil
> >         @customer= Customer.find(params[:id])
> >       end
> >       if(@customer==nil)
> >         q=Carmen.default_country
> >       else
> >         [email protected]
> >       end
> >     end
> >     if(q!=Carmen.default_country)
> >        q1 = q.gsub("_", " ")
> >        q.capitalize!
> >        if(q1!=q && q1!=nil)
> >            q = q1.titleize #q1.split(' ').map {|w| w.capitalize }.join
> > (' ')
> >        end
> >        q = Carmen::country_code(q)
> >     end
> >   �...@states =  Carmen::states(q)
> >  end
> > end
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"ActiveScaffold : Ruby on Rails plugin" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/activescaffold?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to