Hello Bill,
> Here''s what I''ve got:
>
> <% @fields.each do |field_name| %>
> <tr>
> <td>
> <%= field_name.humanize %>
> </td>
> <td>
> <% unless field_name =~ /_id$/ %>
> <%= form.text_field field_name, :size => 40 %>
> <% else %>
> <%= select(:vendor,
> field_name,
> State.find(:all, :order => ''name'').collect
{|p| [ p.name,
> p.id ] },
> :selected => @vendor.state.id ) %>
> <% end %>
> </td>
> </tr>
> </end>
>
> Right now this works great if I only have "state_id" as the
related
> field_name. I could repeat this for every field_name ending in
"_id",
> but that''s not DRY.
>
> I''d like to allow this to work for any field_names ending in
"_id" but I
> need to use the field_name without the "_id" and capitalized as
the
> class name. I know I''m thinking about this from a scripting POV,
but
> can I get this done?
# field_name = "state_id"
...
class_name = field_name.gsub(/_id$/, '''').camelcase
# => "State"
...
class_name.constantize.find :all ...
# => State.find :all ...
...
@vendor.send(class_name.underscore.to_sym)
# => @vendor.state
> Is there a better way to do this?
Not tested, but you get the idea to create your helper.
bye,
-- Jean-Fran?ois.
--
? la renverse.