Hello friends!
I am trying to make city select on my page. So, I have countries, that
has_many cities. account belongs_to city.
I have found example here:
http://pullmonkey.com/2008/3/30/dynamic-select-boxes-ruby-on-rails
So, this way I am doing that. But I have one problem, and two questions
:)
Problem: when user submits form (press Update button), I need do assign
@account.city_id to chosen city_id. I can''t get value of parametr!
(Even
country_id seems to be nil in update method)
Questions:
1) How to get this lovely parametrs in update method?
2) How to use form_for.collection_select helper? I am using form_for,
and it''s rather strange not to use collection_select from it, but it
does not work!
And, finally - how to make collection_Select result be avaliable in
account parmetrs, to use just @account.update_attributes (without
rewriting update method)
Thank you in advance,
here is the code:
account controller:
1. class AccountsController < ApplicationController
2. ...
3. # GET /accounts/1/edit
4. def edit
5. @account = Account.find(params[:id])
6. @countries = Country.find(:all)
7. @cities = City.find(:all)
8. end
9. def update
10. @account = Account.find(params[:id])
11. mama = params[:city_id] # here it is null.
12. respond_to do |format|
13. if @account.update_attributes(params[:account])
14. flash[:notice] = ''Account was successfully
updated.''
15. format.html { redirect_to(@account) }
16. format.xml { head :ok }
17. else
18. format.html { render :action => "edit" }
19. format.xml { render :xml => @account.errors, :status =>
:unprocessable_entity }
20. end
21. end
22. end
23. def update_cities
24. puts "mama papa " + params[:country_id].to_s
25. country = Country.find(params[:country_id])
26. cities = country.cities
27.
28. render :update do |page|
29. page.replace_html ''cities'', :partial =>
''cities'', :object =>
cities
30. end
31.
32. end
33. end
edit view:
1. <h1>Editing account</h1>
2.
3. <%= error_messages_for :account %>
4.
5. <% form_for(@account) do |f| %>
6. <p>
7. <b>Name1</b><br />
8. <%= f.text_field :name1 %>
9. </p>
10.
11. <p>
12. <b>Country</b><br />
13. <%= collection_select(nil, :country_id, @countries, :id,
:name,{},
14. {:onchange => "#{remote_function(:url => {:action =>
"update_cities"},
15. :with =>
"''country_id=''+value")}"}) %>
16. </p>
17.
18. <div id = "cities"><%= render :partial =>
"cities", :object =>
@cities %> </div>
19.
20. <p>
21. <b>Avatar</b><br />
22. <%= f.text_field :avatar %>
23. </p>
24.
25. <p>
26. <%= f.submit "Update" %>
27. </p>
28. <% end %>
partial _city:
1. <p>
2. <b>City</b><br />
3. <%= collection_select(nil, :city_id, cities, :id, :name) %>
4. </p>
--
Posted via http://www.ruby-forum.com/.
--~--~---------~--~----~------------~-------~--~----~
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?hl=en
-~----------~----~----~----~------~----~------~--~---