5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
# File 'lib/sample_filter/action_view_extension.rb', line 5
def form_for_filter(filter_class, options = {}, &block)
options[:as] ||= :sample_filter
options[:block] ||= :after
options[:html] ||= {}
options[:html][:method] ||= :get
options[:html][:id] ||= :sample_filter
options[:url] ||= url_for(
:controller => controller.controller_name,
:action => controller.action_name
)
filter_params_set = filter_class.filter_params_set
filter_params_set.update_attributes(params[options[:as]])
prefix = filter_class.to_s.underscore
content_tag :div, id: 'sample-filter__wrap' do
form_for(filter_params_set, options) do |form|
buffer = ActiveSupport::SafeBuffer.new
buffer << capture(&block) if block_given? && options[:block].eql?(:before)
filter_params_set.fields.each do |field|
type = filter_params_set.type_of(field)
buffer <<
content_tag(:div, class: 'sample-filter__form-item') do
content_tag(:div, form.label(field, sft(prefix, :fields, field)), class: 'sample-filter__form-label') +
content_tag(:div, send("#{type}_tag", form, prefix, filter_params_set, field), class: 'sample-filter__form-input-wrap')
end
end
buffer << capture(&block) if block_given? && options[:block].eql?(:after)
buffer + action_buttons(prefix)
end
end
end
|