Forum: Ruby on Rails has_one problem in a form

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
82a839178c91ae3c43d39972297dfc32?d=identicon&s=25 Ron Miles (Guest)
on 2006-04-17 02:52
(Received via mailing list)
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
C64e63b70be7dfed8b0742540b8b27e5?d=identicon&s=25 Mark Reginald James (Guest)
on 2006-04-17 07:15
(Received via mailing list)
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.
82a839178c91ae3c43d39972297dfc32?d=identicon&s=25 Ron Miles (Guest)
on 2006-04-18 14:32
(Received via mailing list)
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
This topic is locked and can not be replied to.