easy_filters 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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