I think the second most useful usage of the auto_complete is for editing
relations (associations).
I’ve searched for almost a week on all RoR resources but I didn’t found
any solution to this problem. Instead I’ve discovered that there are
many looking for this.
I think that this problem must be clearly solved and the clear how-to
should published on one-more RoR sites.
Because I trust the power of examples I’ll try to explain the problem
using an example.
The description of the problem
- We have two models: Book(s) and Contact(s). A book has_one :contact.
Contact doesn’t know about book. - Because we have a lots of Contacts we can’t use dropdown for
selecting a contact for a book. - Also because contacts can have the same name we must submit the ID of
the contact. - Are interested in a magic way of mapping the relations on submit. We
don’t want to write more code for every new editable relation. - Additional optional behavior: require a valid lookup value (empty not
accepted).
Ideas for implementation
The form should submit something like this: :book => { :name => “my
book”, :author => { :id => 123, :name => “John”} }
The new (improved) update_attributes should work recursively: when he
will find the :author key in the has it will know that :author is a
relation and will call update attributes for it.
I looking for comments, hints or ever portions of code related to this
subject.
PS. How do I make the Contact auto_complete to work in the book form
without inserting other instance variable?