simple_form_ransack 0.0.17 → 0.0.21

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 3aaf4e35c9ce8bb0bc878d9bd73aeba5da18042b
4
- data.tar.gz: a566340fd4da98f5708d09250f1afbe669a9b4a1
2
+ SHA256:
3
+ metadata.gz: 7541a435186f0cdaf1e54ef693cca47a72280821cb776d40f3f1cdc5194b2085
4
+ data.tar.gz: 4c64863709a3833f46602c16c4e44bbaaccfacfd7b4affc07e47b162f34abdb0
5
5
  SHA512:
6
- metadata.gz: 7483ee3d9547a2500df735a6102c5168a1147b6bf5d7163f59adc2f32cdf148cd6dcb583cc20319976849ca7bc2bfbb6b5530a9bd09e6122d2270db4a3a4df0f
7
- data.tar.gz: d2381a05775fff59855115a0e2916d7ff59447df685abd91b56e7e880b8bf214f4fff77c4e1f51c36155890a06a62d5c4dd9681f7bd0f71cd03c8adbf74bde3f
6
+ metadata.gz: 394d9db741220ab6b56e3d99ed52608c1ebb761102c654be65a65ada0369954ce738ff76ea4d7c57af8ac20c4a740f60ba3e8217ab6bdd09174d829cd4a92c32
7
+ data.tar.gz: b68f041a36cbff3502b663d85ad86230363ba18d52eecaae9d7f12fc459447a83f732d1df4e23631bbb72cd3d0574b156374f783854294c5cf3e2049ffadf7c5
data/README.md ADDED
@@ -0,0 +1,60 @@
1
+ # SimpleFormRansack
2
+
3
+ SimpleForm and Ransack combined.
4
+
5
+
6
+ # Installation
7
+
8
+ In your Gemfile:
9
+ ```ruby
10
+ gem 'simple_form_ransack'
11
+ ```
12
+
13
+ In your ApplicationHlper:
14
+ ```ruby
15
+ module ApplicationHelper
16
+ include SimpleFormRansackHelper
17
+ ...
18
+ end
19
+ ```
20
+
21
+ In "application.rb" (for translations):
22
+ ```ruby
23
+ class Application
24
+ # It's important that available locales is defined before calling SimpleFormRansack.locale_files
25
+ config.i18n.available_locales = [:da, :en]
26
+
27
+ config.i18n.load_path += SimpleFormRansack.locale_files
28
+ end
29
+ ```
30
+
31
+ # Usage
32
+
33
+ In your controller:
34
+ ```ruby
35
+ class CustomerController < ApplicationController
36
+ def index
37
+ @ransack_params = params[:q] || {}
38
+ @ransack = Customer.ransack(@ransack_params)
39
+ @customers = @ransack.result
40
+ end
41
+ end
42
+ ```
43
+
44
+ In your views:
45
+ ```erb
46
+ <%= simple_search_form_for @ransack do |f| %>
47
+ <%= f.input :name_cont %>
48
+ <%= f.submit %>
49
+ <% end %>
50
+ ```
51
+
52
+ Instead of something like this with a combination of Ransack and SimpleForm:
53
+ ```erb
54
+ <%= search_form_for @ransack, builder: SimpleForm::FormBuilder do |f| %>
55
+ <%= f.input :name_cont, label: t(".attribute_contains", attribute: User.human_attribute_name(:name)), input_html: {value: @ransack_params[:name_cont]} %>
56
+ <%= f.submit %>
57
+ <% end %>
58
+ ```
59
+
60
+ The `name_cont` input field now gets it label, hint and more translated as normally for a input with `name` but functions with the input-name `q[name_cont]`, making it much easier to use Ransack and SimpleForm, because you don't have to give label, hint or anything else manually.
@@ -26,6 +26,7 @@ class SimpleFormRansack::AttributeInspector
26
26
  if index == @name_parts.length - 1
27
27
  attribute_result = attribute_by_builtup
28
28
  next unless attribute_result
29
+
29
30
  @attribute = attribute_result.fetch(:name)
30
31
  break
31
32
  end
@@ -45,6 +46,7 @@ class SimpleFormRansack::AttributeInspector
45
46
  # Returns true if a complicated label could be generated and simple form should not do this itself.
46
47
  def generated_label?
47
48
  return true if @attribute && @generated_name_classes.any?
49
+
48
50
  false
49
51
  end
50
52
 
@@ -82,6 +84,7 @@ private
82
84
  total_name = @name_builtup.join("_")
83
85
  result = @current_clazz.reflections.find { |name, _reflection| name.to_s == total_name }
84
86
  return {name: result[0], reflection: result[1]} if result
87
+
85
88
  false
86
89
  end
87
90
 
@@ -89,6 +92,7 @@ private
89
92
  total_name = @name_builtup.join("_")
90
93
  result = @current_clazz.attribute_names.find { |name| name.to_s == total_name }
91
94
  return {name: result} if result
95
+
92
96
  false
93
97
  end
94
98
 
@@ -4,6 +4,7 @@ class SimpleFormRansack::FormProxy
4
4
  if Object.const_defined?(:Ransack)
5
5
  predicates = Ransack::Configuration
6
6
  .predicates
7
+ .sorted_names_with_underscores
7
8
  .map(&:first)
8
9
  .map { |predicate| Regexp.escape(predicate) }
9
10
  .join("|")
@@ -32,13 +33,14 @@ class SimpleFormRansack::FormProxy
32
33
  name: name,
33
34
  args: args,
34
35
  params: @params,
36
+ search_key: @ransack.context.search_key,
35
37
  class: @class
36
38
  )
37
39
 
38
40
  @form.input(input_manipulator.attribute_name, *args)
39
41
  end
40
42
 
41
- def method_missing(method_name, *args, &blk)
43
+ def method_missing(method_name, *args, &blk) # rubocop:disable Style/MissingRespondToMissing
42
44
  @form.__send__(method_name, *args, &blk)
43
45
  end
44
46
  end
@@ -5,6 +5,7 @@ class SimpleFormRansack::InputManipulator
5
5
  @args = args.fetch(:args)
6
6
  @name = args.fetch(:name)
7
7
  @params = args.fetch(:params)
8
+ @search_key = args.fetch(:search_key)
8
9
  @class = args.fetch(:class)
9
10
 
10
11
  if @args.last.is_a?(Hash)
@@ -79,11 +80,11 @@ private
79
80
  def set_name
80
81
  # This overrides the individual check boxes and messes up the label targets
81
82
  # There won't be any main input anyway, so it doesn't mess anything up either
82
- @input_html[:id] = "q_#{@name}" unless @as == "check_boxes"
83
+ @input_html[:id] = "#{@search_key}_#{@name}" unless @as == "check_boxes"
83
84
 
84
85
  return if @input_html.key?(:name)
85
86
 
86
- @input_html[:name] = "q[#{@name}]"
87
+ @input_html[:name] = "#{@search_key}[#{@name}]"
87
88
  @input_html[:name] << "[]" if @as == "check_boxes"
88
89
  end
89
90
 
@@ -119,9 +120,10 @@ private
119
120
  return if label_parts.empty?
120
121
 
121
122
  @opts[:label] = label_parts.join
122
- prepend_label_for = %w(cont gteq lteq)
123
+ prepend_label_for = %w[cont gteq lteq]
123
124
 
124
125
  return unless prepend_label_for.include?(@match_type)
126
+
125
127
  @opts[:label] << " #{I18n.t("simple_form_ransack.match_types.#{@match_type}")}"
126
128
  end
127
129
 
@@ -141,7 +143,7 @@ private
141
143
  end
142
144
 
143
145
  def set_value
144
- if @as == "select" || @as == "country"
146
+ if @as == "select" || @as == "country" || @as == "select2"
145
147
  set_value_for_select
146
148
  elsif @as == "check_boxes" || @as == "radio_buttons"
147
149
  set_value_for_checked
@@ -174,6 +176,7 @@ private
174
176
 
175
177
  def set_value_for_boolean
176
178
  return if @input_html.key?(:checked)
179
+
177
180
  @input_html[:checked] = ("checked" if @params[@name] == "1")
178
181
  end
179
182
 
@@ -190,6 +193,7 @@ private
190
193
  def set_include_blank
191
194
  return if @opts.key?(:include_blank)
192
195
  return if @as != "select" && @as != "country"
196
+
193
197
  @opts[:include_blank] = true
194
198
  end
195
199
 
@@ -1,3 +1,3 @@
1
1
  module SimpleFormRansack
2
- VERSION = "0.0.17".freeze
2
+ VERSION = "0.0.21".freeze
3
3
  end
@@ -5,7 +5,11 @@ module SimpleFormRansack
5
5
 
6
6
  def self.locale_files
7
7
  files = []
8
- available_locales = (I18n.available_locales + Rails.application.config.i18n.available_locales).uniq
8
+
9
+ available_locales = []
10
+ available_locales += I18n.available_locales if I18n.available_locales
11
+ available_locales += Rails.application.config.i18n.available_locales if Rails.application.config.i18n.available_locales
12
+ available_locales.uniq!
9
13
 
10
14
  available_locales.each do |locale|
11
15
  path = "#{File.realpath("#{File.dirname(__FILE__)}/../config/locales")}/#{locale}.yml"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_form_ransack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.17
4
+ version: 0.0.21
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kasper Johansen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-31 00:00:00.000000000 Z
11
+ date: 2021-11-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -16,56 +16,56 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 4.0.0
19
+ version: 5.0.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 4.0.0
26
+ version: 5.0.0
27
27
  - !ruby/object:Gem::Dependency
28
- name: capybara
28
+ name: ransack
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 2.6.0
34
- type: :development
33
+ version: 1.8.6
34
+ type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 2.6.0
40
+ version: 1.8.6
41
41
  - !ruby/object:Gem::Dependency
42
- name: sqlite3
42
+ name: capybara
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: 1.3.9
47
+ version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: 1.3.9
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: rspec-rails
56
+ name: country_select
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: 3.4.0
61
+ version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: 3.4.0
68
+ version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: factory_girl_rails
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -95,7 +95,7 @@ dependencies:
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: ransack
98
+ name: pry
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - ">="
@@ -109,7 +109,7 @@ dependencies:
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
- name: haml-rails
112
+ name: rspec-rails
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - ">="
@@ -123,7 +123,7 @@ dependencies:
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
- name: simple_form
126
+ name: rubocop
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - ">="
@@ -137,7 +137,7 @@ dependencies:
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  - !ruby/object:Gem::Dependency
140
- name: country_select
140
+ name: rubocop-performance
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - ">="
@@ -151,7 +151,7 @@ dependencies:
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
153
  - !ruby/object:Gem::Dependency
154
- name: codeclimate-test-reporter
154
+ name: rubocop-rspec
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
157
  - - ">="
@@ -165,7 +165,21 @@ dependencies:
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0'
167
167
  - !ruby/object:Gem::Dependency
168
- name: rubocop
168
+ name: simple_form
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: sqlite3
169
183
  requirement: !ruby/object:Gem::Requirement
170
184
  requirements:
171
185
  - - ">="
@@ -187,6 +201,7 @@ extensions: []
187
201
  extra_rdoc_files: []
188
202
  files:
189
203
  - MIT-LICENSE
204
+ - README.md
190
205
  - Rakefile
191
206
  - app/helpers/simple_form_ransack_helper.rb
192
207
  - config/locales/da.yml
@@ -200,7 +215,8 @@ files:
200
215
  - lib/tasks/simple_form_ransack_tasks.rake
201
216
  homepage: https://www.github.com/kaspernj/simple_form_ransack
202
217
  licenses: []
203
- metadata: {}
218
+ metadata:
219
+ rubygems_mfa_required: 'true'
204
220
  post_install_message:
205
221
  rdoc_options: []
206
222
  require_paths:
@@ -216,8 +232,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
216
232
  - !ruby/object:Gem::Version
217
233
  version: '0'
218
234
  requirements: []
219
- rubyforge_project:
220
- rubygems_version: 2.2.2
235
+ rubygems_version: 3.1.6
221
236
  signing_key:
222
237
  specification_version: 4
223
238
  summary: Ransack and SimpleForm combined.