easy_filters 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +61 -35
  3. data/lib/easy_filters/version.rb +2 -2
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1157caafe4fbbbadc2f21ac3dd9c1e8fc76eed32
4
- data.tar.gz: 7f3bcf4651888dfbc41a7c7b536b066223a49653
3
+ metadata.gz: 19155d4317913a170eeae20a792f6cea6cdc2e61
4
+ data.tar.gz: 6a557001e6dc7581ae2e32755571e0970cf26940
5
5
  SHA512:
6
- metadata.gz: bb0b250b1e6d1a0d67f417858eda52d1171126341b93f45107b7653f304a9abefb914fff2368bd41b0e321c9e04ceccd89dcc35f5db9cd518938d8d7e884efa2
7
- data.tar.gz: 774e231c3e2cc6e7d568a20bf8510ce8f03ab0d8c729218a8fb66c56b0e915f89ed7d5b8726be7f138ab739a211d58229cf7372997bbdb220f1a72bbf20979ed
6
+ metadata.gz: 194967011a03333cad0deed886d26a999fc8390fad6beb0505e7359738bba1963c1999a3719ea99ee8473fa2ebe3907f9f8dba312b42c5de20501a34949e5c55
7
+ data.tar.gz: d0c05ce2cbbe406f2b0d441718006666d075adbd27af2ee48ce2679d7f29f884f7572a93c2317c93c726d1bfdea8261e62e63680fc4f94af9fcafd607538fbf2
data/README.md CHANGED
@@ -20,20 +20,23 @@ And then execute:
20
20
  ```
21
21
 
22
22
  ## Usage
23
-
23
+ Create a `articles_filter.rb` file in `app/models/easy_filters` folder
24
24
  EasyFilters expects you to define the following methods:
25
25
 
26
26
  ```ruby
27
- class ArticlesFilter < EasyFilters::ModelFilter
27
+ module EasyFilters
28
28
 
29
- # Default values for this filter.
30
- def self.defaults
31
- { body: nil, date_from: nil, date_to: nil }
32
- end
29
+ class ArticlesFilter < ModelFilter
30
+
31
+ # Default values for this filter.
32
+ def self.defaults
33
+ { body: nil, date_from: nil, date_to: nil }
34
+ end
33
35
 
34
- # Model class to be filtered.
35
- def model
36
- Article
36
+ # Model class to be filtered.
37
+ def model
38
+ Article
39
+ end
37
40
  end
38
41
  end
39
42
 
@@ -55,37 +58,55 @@ Each `filter_by_*` method receives 2 params:
55
58
  For example:
56
59
 
57
60
  ```ruby
58
- class ArticlesFilter < ModelFilter
61
+
62
+ module EasyFilters
63
+
64
+ class ArticlesFilter < ModelFilter
59
65
 
60
- #(...) previously defined methods
66
+ #(...) previously defined methods
61
67
 
62
- # Custom filter method for :body field.
63
- def filter_by_body(scope, value)
64
- matcher = "%#{value}%"
65
- scope.where('body like ? OR body like ?', matcher, matcher)
66
- end
68
+ # Custom filter method for :body field.
69
+ def filter_by_body(scope, value)
70
+ matcher = "%#{value}%"
71
+ scope.where('body like ? OR body like ?', matcher, matcher)
72
+ end
67
73
 
68
- # The following 2 filter_by builds an from/to/between date filter:
74
+ # The following 2 filter_by builds an from/to/between date filter:
69
75
 
70
- # Custom filter method for :date_from field.
71
- def filter_by_date_from(scope, value)
72
- scope.joins(:editions).where('editions.date >= ?', Date.parse(value))
73
- end
76
+ # Custom filter method for :date_from field.
77
+ def filter_by_date_from(scope, value)
78
+ scope.joins(:editions).where('editions.date >= ?', Date.parse(value))
79
+ end
74
80
 
75
- # Custom filter method for :date_to field.
76
- def filter_by_date_to(scope, value)
77
- scope.joins(:editions).where('editions.date <= ?', Date.parse(value))
81
+ # Custom filter method for :date_to field.
82
+ def filter_by_date_to(scope, value)
83
+ scope.joins(:editions).where('editions.date <= ?', Date.parse(value))
84
+ end
78
85
  end
79
86
  end
80
87
 
81
88
  ```
89
+
82
90
  ### Usage in controllers
83
91
 
84
92
  You can instance a filter in your controller, and define some
85
93
  usefull methods
86
94
 
87
95
  For example:
96
+
88
97
  ```ruby
98
+
99
+ #(...) previously defined controller
100
+
101
+ before_action :filter, only: [:filter_page]
102
+ before_action :clear_filter, only: [:filter_page]
103
+
104
+ def filter_page
105
+ @objects = @filter.all
106
+ end
107
+
108
+ private
109
+
89
110
  def create_filter(filter_class, opts = {})
90
111
  options = { store: session, persist: true }.merge opts
91
112
  filter_class.new options
@@ -93,13 +114,13 @@ For example:
93
114
 
94
115
  def filter_params
95
116
  if params.has_key?(:filter)
96
- params.require(:filter).permit(:firstname, :lastname, :cuit).to_options
117
+ params.require(:filter).permit(:body, :date_from, :date_to).to_options
97
118
  end
98
119
  end
99
120
 
100
121
  # Create the @filter object with the currently-set values for the filters
101
122
  def filter
102
- @filter = create_filter PaymentsFilter, values: filter_params
123
+ @filter = create_filter EasyFilters::ArticlesFilter, values: filter_params
103
124
  end
104
125
 
105
126
  # Clear the currently-set filters, restoring them to the defaults
@@ -109,14 +130,19 @@ For example:
109
130
  redirect_to request.path
110
131
  end
111
132
  end
133
+
112
134
  ```
113
- ### Usage in views
114
-
115
- Define a input with the filter
116
- ```ruby
117
- <%= form_tag do %>
118
- <%= label :filter, :firstname %>
119
- <%= submit_tag t('common.filters.search' %>
120
- <%= submit_tag t('common.filters.clear' %>
135
+
136
+ ### Usage in views
137
+ Define a input with the filter
138
+
139
+ ```ruby
140
+
141
+ <% form_tag '', :method => :get do %>
142
+ <%= label :filter, :body %>
143
+ <%= text_field :filter, :body %>
144
+ <%= submit_tag t('common.filters.search') %>
145
+ <%= submit_tag t('common.filters.clear') %>
121
146
  <% end %>
122
- ```
147
+
148
+ ```
@@ -1,3 +1,3 @@
1
1
  module EasyFilters
2
- VERSION = "0.0.2"
3
- end
2
+ VERSION = "0.0.3"
3
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easy_filters
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - German Olle
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-03 00:00:00.000000000 Z
11
+ date: 2014-04-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler