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
-~----------~----~----~----~------~----~------~--~---