aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_controller/auto_complete.rb
diff options
context:
space:
mode:
Diffstat (limited to 'actionpack/lib/action_controller/auto_complete.rb')
-rw-r--r--actionpack/lib/action_controller/auto_complete.rb31
1 files changed, 31 insertions, 0 deletions
diff --git a/actionpack/lib/action_controller/auto_complete.rb b/actionpack/lib/action_controller/auto_complete.rb
new file mode 100644
index 0000000000..606f43b350
--- /dev/null
+++ b/actionpack/lib/action_controller/auto_complete.rb
@@ -0,0 +1,31 @@
+module ActionController
+ # Example:
+ #
+ # # Controller
+ # class BlogController < ApplicationController
+ # auto_complete_for :post, :title
+ # end
+ #
+ # # View
+ # <%= text_field_with_auto_complete :post, title %>
+ module AutoComplete
+ def self.append_features(base) #:nodoc:
+ super
+ base.extend(ClassMethods)
+ end
+
+ module ClassMethods
+ def auto_complete_for(object, method)
+ define_method("auto_complete_for_#{object}_#{method}") do
+ @items = object.to_s.camelize.constantize.find(
+ :all,
+ :conditions => [ "LOWER(#{method}) LIKE ?", '%' + request.raw_post.downcase + '%' ],
+ :order => "#{method} ASC"
+ )
+
+ render :inline => "<%= auto_complete_result @items, '#{method}' %>"
+ end
+ end
+ end
+ end
+end \ No newline at end of file