Thanks again, Colin--in item.rb:
belongs_to :category
And in category.rb:
has_many :items
Item has a field category_id which I intended to populate with the
links from an item to its category. The field header in the category
db is where the name of the category is.
Am I setting it up wrong then to have:
<%= f.collection_select :category_id, Category.all, :id, :header,
{}, :multiple => false %>
in the form? It does show up as a drop down box with the names
populated in it.
Again, thanks super for helping me figure this out,
Craig
On Sep 25, 8:19 am, Colin Law <[email protected]> wrote:
> 2009/9/25 Dudebot <[email protected]>:
>
>
>
> > Thanks super, Colin--that really helps. I believe category_id is
> > being passed, as in the development.log
>
> > Processing ItemsController#update (for ::1 at 2009-09-25 06:34:23)
> > [PUT]
> > Parameters: {"commit"=>"Update", ... "id"=>"228", "item"=>
> > {..."category_id"=>["2"], ...}}
>
> This looks a bit odd, why is it passing the id as a single element
> array I wonder?
> See below
>
>
>
>
>
> > [4;35;1mPage Load (1.1ms) [0m [0mSELECT * FROM "pages" ORDER BY
> > position [0m
> > [4;36;1mUser Load (0.6ms) [0m [0;1mSELECT * FROM "users" WHERE
> > ("users"."id" = 1) LIMIT 1 [0m
> > [4;35;1mItem Load (0.7ms) [0m [0mSELECT * FROM "items" WHERE
> > ("items"."id" = 228) [0m
> > Redirected tohttp://localhost:3000/items/228
> > Completed in 102ms (DB: 2) | 302 Found [http://localhost/items/228]
>
> > and for different updates, the number in category_id [ ] is changing.
> > In my controller, I have the provided boilerplate for update:
>
> > def update
> > �...@item = Item.find( params[ :id ] )
>
> > respond_to do |format|
> > if @item.update_attributes(params[:item])
> > ...
>
> > Am I missing something in the controller? Does a collection need to
> > be handled separately?
>
> > Many TIA,
> > Craig
>
> > On Sep 25, 2:36 am, Colin Law <[email protected]> wrote:
> >> 2009/9/25 Dudebot <[email protected]>:
>
> >> > Hi Gurus, I'm trying to tackle a drop down list. I have category and
> >> > item dbs, and they're wired up with category has_many :items and item
> >> > belongs_to :category, and an item has a category_id. I have this code
> >> > in my new/edit.html.erb for item:
>
> >> > <%= f.collection_select :category_id,
> >> > Category.find_main, :id, :header, {}, :multiple => false %>
>
> I don't see anything wrong with this.
>
>
>
> >> > And a pretty drop down list comes up, but no matter what I do, I can't
> >> > save an item with a different category--it always stubbornly records
> >> > the same one (or doesn't change it at all). The source html code
> >> > generated is:
>
> >> > <select id="item_category_id" name="item[category_id][]"><option
>
> There is the problemI think, the extra set of [] for item[category_id].
> Are you sure you have item belongs_to :category? It is as if it
> thinks there should be an array of id values.
>
> Colin
>
>
>
> >> > value="3">Awesome Things</option>
> >> > <option value="1" selected="selected">Good Things</option>
> >> > <option value="2">Better Things</option></select>
>
> >> > ...and although I can "choose" a different category for an item than
> >> > 'Good Things', it only records 'Good Things' (category_id 1) for all
> >> > items.
>
> >> The first thing to do is to look in your log file (log/developent.log)
> >> to check that the selection is being passed in params. If it is then
> >> consider whether what the controller action that you are passing it to
> >> is doing with it.
>
> >> Colin
--~--~---------~--~----~------------~-------~--~----~
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 [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---