Hello all, I have a syntax question. How does one refer to a field brought in via a has_one/belongs_to relationship in a form helper? Basically, I have two models: class Resource < ActiveRecord::Base has_one :other_thing end class OtherThing < ActiveRecord::Base belongs_to :resource end It has the normal id-resource_id foreign key relationship. OtherThing has two fields, plus the foreign key, call them field1 and field2. In the ruby console, I can access field1 a couple of ways: resource.other_thing.field1 resource.other_thing['field1'] Maybe a few other ways. What I want is to update field1 in a form that also updates fields in the resources table. It's simple for fields that REALLY belong to resource, but seemingly a problem for related fields in other tables. select(:resource, :status, @statuses) works fine, for instance. I'm looking for select(:resource.other_thing, :field1, @options), select(:resource, :other_thing.field1, @options), select('resource', 'other_thing.field1', @options), select(:resource, :other_thing[:field1], @options) or something to like that, but no luck. Anyone have any thoughts on the proper syntax? Thanks in advance, -Ron
on 2006-04-17 02:52
on 2006-04-17 07:15
Ron Miles wrote: > select('resource', 'other_thing.field1', @options), > select(:resource, :other_thing[:field1], @options) No, you can't do that at present, though a long time ago I wrote a patch for it: http://dev.rubyonrails.org/ticket/2053 Instead you need to write: @other_thing = @resource.other_thing select :other_thing, :field1 then process their posted parameters separately in your controller. -- We develop, watch us RoR, in numbers too big to ignore.
on 2006-04-18 14:32
Thanks Mark, The select() loads properly with the option data now, but it doesn't reflect the exising value in the database for some reason. I was able to bypass that by using if/else logic in the form view to mark the "selected" item. Thanks for the push in the right direction (separating out other_thing into it's own variable). Much appreciated, -Ron