grosser / simple_auto_complete forked from david/simple_auto_complete
- Source
- Commits
- Network (2)
- Issues (0)
- Downloads (1)
- Wiki (1)
- Graphs
-
Branch:
master
| name | age | message | |
|---|---|---|---|
| |
CHANGELOG | Wed Dec 23 06:56:22 -0800 2009 | |
| |
README.markdown | Wed Dec 23 08:25:52 -0800 2009 | |
| |
Rakefile | Wed Dec 23 08:23:43 -0800 2009 | |
| |
VERSION | Wed Dec 23 08:19:23 -0800 2009 | |
| |
example_js/ | Sat Aug 15 07:12:46 -0700 2009 | |
| |
init.rb | Wed Dec 23 06:50:21 -0800 2009 | |
| |
lib/ | Wed Dec 23 08:22:03 -0800 2009 | |
| |
simple_autocomplete.gemspec | Wed Dec 23 08:23:50 -0800 2009 | |
| |
spec/ | Wed Dec 23 08:22:03 -0800 2009 |
- simple unobstrusive autocomplete
- JS-library-independent
- Controller and Model helpers
Install
As Rails plugin:
script/plugin install git://github.com/grosser/simple_auto_complete.git
Or As Gem:
sudo gem install simple_autocomplete
Then copy javascripts/css from example folder OR use your own
Examples
Controller
By default, autocomplete_for limits the results to 10 entries,
and sorts by the autocomplete field.
class UsersController < ApplicationController
autocomplete_for :user, :name
end
autocomplete_for takes a third parameter, an options hash which is used in the find:
autocomplete_for :user, :name, :limit => 15, :order => 'created_at DESC'
With a block you can generate any output you need (passed into render :inline):
autocomplete_for :post, :title do |items|
items.map{|item| "#{item.title} -- #{item.id}"}.join("\n")
end
The items passed into the block is an ActiveRecord scope allowing further scopes to be chained:
autocomplete_for :post, :title do |items|
items.for_user(current_user).map(&:title).join("\n")
end
View
<%= f.text_field :auto_user_name, :class => 'autocomplete', 'autocomplete_url'=>autocomplete_for_user_name_users_path %>
Routes
map.resources :users, :collection => { :autocomplete_for_user_name => :get}
JS
use any library you like (includes examples for jquery jquery.js + jquery.autocomplete.js + jquery.autocomplete.css)
jQuery(function($){//on document ready
//autocomplete
$('input.autocomplete').each(function(){
var $input = $(this);
$input.autocomplete($input.attr('autocomplete_url'));
});
});
Records (Optional)
- converts an auto_complete form field to an association on assignment
- Tries to find the record by using
find_by_autocomplete_xxxon the records model - unfound record -> nil
- blank string -> nil
- Controller find works independent of this find
Example for a post with autocompleted user name:
class User
find_by_autocomplete :name # User.find_by_autocomplete_name('Michael')
end
class Post
has_one :user
autocomplete_for(:user, :name) #--> f.text_field :auto_user_name
# OR
autocomplete_for(:user, :name, :name=>:creator) #--> f.text_field :auto_creator_name (creator must a an User)
end
Authors
Inspired by DHH`s 'obstrusive' autocomplete_plugin.
Contributors (alphabetical)
Michael Grosser
grosser.michael@gmail.com
Hereby placed under public domain, do what you want, just do not hold me accountable...
