searchify 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -57,6 +57,14 @@ Searchify can also be used in a form. For example, let's say that a post belongs
57
57
 
58
58
  Searchify will include a `user_id` field in your form, which will be automatically populated.
59
59
 
60
+ #### Scopes
61
+
62
+ Searchify is scopes aware. Let's say you are here:
63
+
64
+ `/posts?created_by=3`
65
+
66
+ Assuming your `Post` model responds to the `created_by` method, it will be included in the search.
67
+
60
68
  #### Search stategies
61
69
 
62
70
  By default, Searchify does a case insensitive search on `name`, `title` and `abbreviation` fields of your models, if they exist. You can of course specify
@@ -1,5 +1,5 @@
1
1
  module Searchify
2
- class SearchifyController < ActionController::Base
2
+ class SearchifyController < ::ApplicationController
3
3
 
4
4
  respond_to :js
5
5
 
@@ -14,16 +14,14 @@ module Searchify
14
14
  search_term = params[:term]
15
15
  search_keyword = extract_search_key(resource_class)
16
16
 
17
- scopes = params.except("controller", "action", "format", "collection", "term", "page")
18
-
19
17
  collection = if resource_class.respond_to?(:search_strategy)
20
- resource_class.search_strategy(search_term, scopes)
18
+ resource_class.search_strategy(search_term, current_scopes)
21
19
  else
22
20
  columns = DEFAULT_COLUMNS & resource_class.column_names
23
21
 
24
22
  scoped = resource_class.where( columns.map{ |c| "(#{c} #{search_keyword} :term)" }.join(' OR '), :term => "%#{search_term}%")
25
23
 
26
- scopes.each do |key, value|
24
+ searchify_scopes.each do |key, value|
27
25
  scoped = scoped.send(key, value) if resource_class.respond_to?(key)
28
26
  end
29
27
 
@@ -4,9 +4,9 @@ module Searchify
4
4
  options = args.extract_options!
5
5
 
6
6
  collection = options[:collection] || args.shift || extract_collection
7
- search_url = options[:search_url] || extract_search_url(collection)
7
+ search_url = options[:search_url] || extract_search_url(collection, searchify_scopes)
8
8
  select_url = options[:select_url] || extract_select_url
9
-
9
+
10
10
  text_field_tag(:searchify, nil, :class => :searchify, :data => {:'select-url' => select_url, :'search-url' => search_url})
11
11
  end
12
12
 
@@ -20,8 +20,8 @@ module Searchify
20
20
  end
21
21
  end
22
22
 
23
- def extract_search_url(collection)
24
- "/searchify/search/#{collection}.json"
23
+ def extract_search_url(collection, scopes)
24
+ "/searchify/search/#{collection}.json?" + scopes.map{ |k,v| "#{k}=#{v}" }.join('&')
25
25
  end
26
26
 
27
27
  def extract_select_url
data/lib/searchify.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require "searchify/controller"
1
2
  require "searchify/engine"
2
3
 
3
4
  module Searchify
@@ -0,0 +1,17 @@
1
+ module Searchify
2
+ module Controller
3
+ SCOPE_EXCLUSION = %w( controller action format collection term page )
4
+
5
+ def self.included(base)
6
+ base.class_eval do
7
+ include InstanceMethods
8
+ end
9
+ end
10
+
11
+ module InstanceMethods
12
+ def searchify_scopes
13
+ params.except(*SCOPE_EXCLUSION)
14
+ end
15
+ end
16
+ end
17
+ end
@@ -3,6 +3,8 @@ module Searchify
3
3
  isolate_namespace Searchify
4
4
 
5
5
  initializer "extend Controller with Searchify helpers" do |app|
6
+ ActionController::Base.send :include, Searchify::Controller
7
+ ActionController::Base.helper_method :searchify_scopes
6
8
  ActionController::Base.helper Searchify::SearchifyHelper
7
9
  end
8
10
  end
@@ -1,3 +1,3 @@
1
1
  module Searchify
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: searchify
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-11-13 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
- requirement: &14660900 !ruby/object:Gem::Requirement
16
+ requirement: &21309620 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 3.1.1
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *14660900
24
+ version_requirements: *21309620
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: jquery-rails
27
- requirement: &14660380 !ruby/object:Gem::Requirement
27
+ requirement: &21309180 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *14660380
35
+ version_requirements: *21309180
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: sqlite3
38
- requirement: &14659500 !ruby/object:Gem::Requirement
38
+ requirement: &21308660 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *14659500
46
+ version_requirements: *21308660
47
47
  description: Searchify provides a quick way to search your collections.
48
48
  email:
49
49
  - christ.blais@gmail.com
@@ -53,12 +53,11 @@ extra_rdoc_files: []
53
53
  files:
54
54
  - app/helpers/searchify/searchify_helper.rb
55
55
  - app/controllers/searchify/searchify_controller.rb
56
- - app/views/searchify/searchify/search.html.erb
57
- - app/views/layouts/searchify/application.html.erb
58
56
  - app/assets/javascripts/searchify/searchify.js.coffee
59
57
  - config/routes.rb
60
58
  - lib/searchify/version.rb
61
59
  - lib/searchify/engine.rb
60
+ - lib/searchify/controller.rb
62
61
  - lib/searchify.rb
63
62
  - lib/tasks/searchify_tasks.rake
64
63
  - MIT-LICENSE
@@ -1,14 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <title>Searchify</title>
5
- <%= stylesheet_link_tag "searchify/application" %>
6
- <%= javascript_include_tag "searchify/application" %>
7
- <%= csrf_meta_tags %>
8
- </head>
9
- <body>
10
-
11
- <%= yield %>
12
-
13
- </body>
14
- </html>
@@ -1,2 +0,0 @@
1
- <h1>Searchify#search</h1>
2
- <p>Find me in app/views/searchify/searchify/search.html.erb</p>