rails3-jquery-autocomplete 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.markdown CHANGED
@@ -4,6 +4,8 @@ An easy way to use jQuery's autocomplete with Rails 3.
4
4
 
5
5
  In now supports both ActiveRecord and [mongoid](http://github.com/mongoid/mongoid).
6
6
 
7
+ It also supports [Formtastic](http://github.com/justinfrench/formtastic)
8
+
7
9
  ## ActiveRecord
8
10
 
9
11
  You can find a [detailed example](http://github.com/crowdint/rails3-jquery-autocomplete-app)
@@ -12,7 +14,7 @@ on how to use this gem with ActiveRecord [here](http://github.com/crowdint/rails
12
14
  ## MongoID
13
15
 
14
16
  You can find a [detailed example](http://github.com/crowdint/rails3-jquery-autocomplete-app/tree/mongoid)
15
- on how to use this gem with MongoID [here](http://github.com/crowdint/rails3-jquery-autocomplete-app/tree/mongoid).
17
+ on how to use this gem with MongoID [here](http://github.com/crowdint/rails3-jquery-autocomplete-app/tree/mongoid). (Same thing, different branch)
16
18
 
17
19
  ## Before you start
18
20
 
@@ -154,6 +156,16 @@ If you need to use the id of the selected object, you can use the *:id_element*
154
156
 
155
157
  This will update the field with id *#some_element with the id of the selected object. The value for this option can be any jQuery selector.
156
158
 
159
+ ## Formtastic
160
+
161
+ If you are using [Formtastic](http://github.com/justinfrench/formtastic), you automatically get the *autocompleted_input* helper on *semantic_form_for*:
162
+
163
+ semantic_form_for @product do |f|
164
+ f.autocompleted_input :brand_name, :url => autocomplete_brand_name_path
165
+ end
166
+
167
+ The only difference with the original helper is that you must specify the autocomplete url using the *:url* option.
168
+
157
169
  # Cucumber
158
170
 
159
171
  I have created a step to test your autocomplete with Cucumber and Capybara, all you have to do is add the following lines to your *env.rb* file:
@@ -192,10 +204,14 @@ And then, install all your dependencies:
192
204
 
193
205
  ## Running the test suite
194
206
 
207
+ You need to have an instance of MongoDB running on your computer or all the mongo tests will fail miserably.
208
+
195
209
  rake test
196
-
210
+
197
211
  # Changelog
198
212
 
213
+ * 0.5.0 Formtastic support
214
+ * 0.4.0 MongoID support
199
215
  * 0.3.6 Using .live() to put autocomplete on dynamic fields
200
216
 
201
217
  # About the Author
@@ -1,8 +1,20 @@
1
1
  require 'rails3-jquery-autocomplete/form_helper'
2
2
  require 'rails3-jquery-autocomplete/helpers'
3
3
  require 'rails3-jquery-autocomplete/autocomplete'
4
+ require 'rails3-jquery-autocomplete/formtastic_plugin'
4
5
 
5
6
  class ActionController::Base
6
7
  extend Rails3JQueryAutocomplete::ClassMethods
7
8
  include Rails3JQueryAutocomplete::Helpers
8
9
  end
10
+
11
+ #
12
+ # Load the formtastic plugin if using Formtastic
13
+ #
14
+ begin
15
+ require 'formtastic'
16
+ class Formtastic::SemanticFormBuilder < ActionView::Helpers::FormBuilder
17
+ include Rails3JQueryAutocomplete::FormtasticPlugin
18
+ end
19
+ rescue LoadError
20
+ end
@@ -0,0 +1,42 @@
1
+ module Rails3JQueryAutocomplete
2
+ module FormtasticPlugin
3
+ def autocompleted_input(method, options = {})
4
+ if options.key?(:selected) || options.key?(:checked) || options.key?(:default)
5
+ ::ActiveSupport::Deprecation.warn(
6
+ "The :selected, :checked (and :default) options are deprecated in Formtastic and will be removed from 1.0. " <<
7
+ "Please set default values in your models (using an after_initialize callback) or in your controller set-up. " <<
8
+ "See http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html for more information.", caller)
9
+ end
10
+
11
+ options[:required] = method_required?(method) unless options.key?(:required)
12
+ options[:as] ||= "autocompleted_string"
13
+
14
+ html_class = [ options[:as], (options[:required] ? :required : :optional) ]
15
+ html_class << 'error' if @object && @object.respond_to?(:errors) && !@object.errors[method.to_sym].blank?
16
+
17
+ wrapper_html = options.delete(:wrapper_html) || {}
18
+ wrapper_html[:id] ||= generate_html_id(method)
19
+ wrapper_html[:class] = (html_class << wrapper_html[:class]).flatten.compact.join(' ')
20
+
21
+ if options[:input_html] && options[:input_html][:id]
22
+ options[:label_html] ||= {}
23
+ options[:label_html][:for] ||= options[:input_html][:id]
24
+ end
25
+
26
+ input_parts = self.class.inline_order.dup
27
+ input_parts = input_parts - [:errors, :hints] if options[:as] == :hidden
28
+
29
+ list_item_content = input_parts.map do |type|
30
+ send(:"inline_#{type}_for", method, options)
31
+ end.compact.join("\n")
32
+
33
+ return template.content_tag(:li, Formtastic::Util.html_safe(list_item_content), wrapper_html)
34
+ end
35
+
36
+
37
+ protected
38
+ def autocompleted_string_input(method, options)
39
+ self.label(method, options_for_label(options)) << autocomplete_field(method, options.delete(:url), options)
40
+ end
41
+ end
42
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails3-jquery-autocomplete
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15
4
+ hash: 11
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 4
8
+ - 5
9
9
  - 0
10
- version: 0.4.0
10
+ version: 0.5.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - David Padilla
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-10-22 00:00:00 -05:00
18
+ date: 2010-10-26 00:00:00 -05:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -52,6 +52,7 @@ files:
52
52
  - lib/rails3-jquery-autocomplete.rb
53
53
  - lib/rails3-jquery-autocomplete/autocomplete.rb
54
54
  - lib/rails3-jquery-autocomplete/form_helper.rb
55
+ - lib/rails3-jquery-autocomplete/formtastic_plugin.rb
55
56
  - lib/rails3-jquery-autocomplete/helpers.rb
56
57
  - test/active_record_controller_test.rb
57
58
  - test/form_helper_test.rb