Has_one problem in a form

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

Ron M. 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.

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