Thanks for the replies. The code, as y'all noted, was incorrect. This fixed it:
collection_select(:observation, :observation_category_id, ObservationCategory.find(:all), :id, :name) I read somewhere that if the :method parameter returns a value in the :value parameter, that value will default to the selected item in the list, and this turned out to be true, thus eliminating the need for :selected. If I understand your points, the f.collection_select syntax is preferred over what I have. I'll make that update, and thanks for the advice. -Luke On Apr 7, 11:56 pm, Ram <yourstruly.vi...@gmail.com> wrote: > ive come across this problem and as far as my searching took me, > collection_select does not support the :selected option. > you can handle this by initializing the "selected" value in the > controller for the appropriate attribute before rendering the partial. > > The code you have shown above is slightly flawed in the syntax of > collection_select as Fred has already pointed out. I think you want > > <%= f.collection_select :observation_category_id, > ObservationCategory.find(:all), :id, :name %> > > So in your case, the problem really was the syntax. The above should > work for your edit form ie. the correct option will be selected based > on the existing value (built into collection_select). > > The lack of support for the :selected option in collection_select > however, is a side issue. Anyone know if there's a fix for it? Besides > initializing the value for it in the controller before rendering the > partial? > > On Apr 7, 12:43 pm, Frederick Cheung <frederick.che...@gmail.com> > wrote: > > > On Apr 7, 5:21 am,LukeG<lgill...@gmail.com> wrote: > > > > I'm a noob. I've trolled the web and groups for help, but I just don't > > > know enough Rails to apply the solutions to my particular problem. I > > > even got the screencast from Pragmatic Programmers, but still no dice. > > > > I'm having a problem getting my collection_select to initialize with a > > > previously stored value. I have items and categories, with many items > > > to one category. When I edit an item, the category list populates > > > correctly, but I cannot figure out how to set the default to whatever > > > category was already stored for that item. > > > collection_select is like the various model helpers in that you do > > collection_select 'instance_variable_name', 'method_name', ... > > ie in this instance collection_select 'observation', > > 'category_id', ... > > > Seeing as how you've already got a form_for setup, you should be able > > to do f.collection_select 'category_id', ... > > Calling it on the form builder means you don't need to tell rails > > which object you are working with. > > > Fred > > > > Running Rails 2.3.2, here is the code: > > > > *controller:* > > > def edit > > > @observation = Observation.find(params[:id]) > > > end > > > > *view:* > > > <%= f.label "Category" %><br /> > > > <%= > > > collection_select(:observation_category_id, > > > @category_id, > > > > > > ObservationCategory.find(:all), > > > :id, > > > :name, > > > {:selected => > > > @observation.observation_category_id}) > > > %> > > > > *models:* > > > class Observation < ActiveRecord::Base > > > attr_accessible :name, :icon_url, :observation_catategory_id > > > belongs_to :observation_category > > > end > > > > class ObservationCategory < ActiveRecord::Base > > > has_many :observations > > > end > > > > *html:* > > > <label for="observation_Category">Category</label><br /> > > > <select id="observation_category_id_" > > > name="observation_category_id > > > []"><option value="1">exercise</option> > > > <option value="2">finance</option> > > > <option value="3">nutrition</option> > > > <option value="4">mood</option> > > > <option value="5">energy</option> > > > > <option value="6">focus</option> > > > <option value="7">sleep</option> > > > <option value="8">junk_cat</option> > > > <option value="9">satiation</option></select> --~--~---------~--~----~------------~-------~--~----~ 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@googlegroups.com To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---