I've been searching for a way to get DHH's auto_complete plugin to
work with Ryan Bates' complex forms. All I could find was people
asking the same question, but no solutions so I decided to try it
myself. I don't know if this id the best way to do it, but the
solution was to monkey patch ActionView::FormHelper and FormBuilder
which I put in a seperate file in the /lib folder of my project.
Here's the code:
## lib/auto_complete_form_helper.rb
module ActionView
module Helpers
module FormHelper
def text_field_with_auto_complete_mod(object, method,
tag_options = {}, completion_options = {})
sanitized_object = object.gsub(/\]\[|[^-a-zA-Z0-9:.]/, "_").sub
(/_$/, "")
sanitized_method = method.to_s.sub(/\?$/,"")
(completion_options[:skip_style] ? "" :
auto_complete_stylesheet) +
text_field(object, method, tag_options) +
content_tag("div", "", :id => "#{sanitized_object}_#
{sanitized_method}_auto_complete", :class => "auto_complete") +
auto_complete_field("#{sanitized_object}_#{sanitized_method}",
{ :url => { :action => "auto_complete_for_#{sanitized_object}_#
{sanitized_method}" } }.update(completion_options))
end
end
class FormBuilder
def text_field_with_auto_complete(method, tag_options = {},
completion_options = {})
@template.text_field_with_auto_complete_mod(@object_name,
method,
objectify_options(tag_options), completion_options)
end
end
end
end
Don't forget to include the file in your environment.rb of course. I
know some people were looking for a way to get this to work, so I
thought it might be helpful if I post it on the mailing list. If you
see any bugs or know of a better way, please let me know.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby
on Rails: Talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---