Hi,
I am trying to use an association in a form helper, like this:
<%= text_field “group.moderator”, “id” %>
I get this error:
`@group.moderator’ is not allowed as an instance variable name
Here is how I defined the models:
class Moderator < ActiveRecord::Base
has_many :groups
end
class Group < ActiveRecord::Base
belongs_to :moderator
end
How can I use associations in form helpers?
Thanks,
David
On Oct 8, 2006, at 2:05 AM, [email protected] wrote:
has_many :groups
end
class Group < ActiveRecord::Base
belongs_to :moderator
end
The call is
<%= text_field :group, :moderator_id %>
assuming that’s the foreign key in “groups”. Nevertheless it is
unsual to ask the user for an ID, normally you use a combo.
If the number of groups is too large for the combo to be usable some
kind of auto completer is handy, but strings are not good to identify
models. I wrote a helper that encapsulates a widget that mixes the
auto completer with a hidden field for the key, I plan to polish it a
release it as a plugin.
– fxn
On Oct 9, 2006, at 5:24 AM, [email protected] wrote:
Actually, I want to display other fields in the moderators table, and
traverse the association, like this:
<%= text_field “group.moderator”, “login” %> or <%= text_field
“group”, “moderator.login” %>
where “login” is an atttribute of the “moderator” which is associated
with the “group”.
Neither of these approaches works, but “@group.moderator.login” is a
valid attribute.
Helpers like text_field have this signature
text_field(object, method, …)
where “object” is the name of an instance variable in the view
(idiomatically a symbol), and “method” the name of an accessor.
Behind the scenes, the helper gets the variable dynamically and sends
() method to it. With that call the helper sets the initial value of
the widget, and constructs the name “object[method]”. That’s very
handy, because most of the time is just what you need.
You need to switch to the generic *_tag family of helpers for extra
flexibility, in this case text_field_tag.
– fxn