Module: MultiSolr::RailsFormRenderHelper

Defined in:
lib/multi_solr/rails_form_render_helper.rb

Instance Method Summary collapse

Instance Method Details

#render_solr_filter_collection(form, filter, options) ⇒ Object



59
60
61
62
63
64
65
# File 'lib/multi_solr/rails_form_render_helper.rb', line 59

def render_solr_filter_collection form, filter, options
  add_class options, 'collection'
  core_handler = options.delete(:core_handler)
  context = options.delete(:context)
  data = filter.collection_data(core_handler, context)
  form.select "filter_#{filter.name}", data, options
end

#render_solr_filter_date(form, filter, options) ⇒ Object

generiert für einen SolrFilterSimple einen input-tag vom typ text mit der css-class “datepicker” Diese css-Klasse kann dann als jQuery-Selector für datepicker genutzt werden



36
37
38
39
# File 'lib/multi_solr/rails_form_render_helper.rb', line 36

def render_solr_filter_date form, filter, options
  add_class options, 'datepicker'
  form.text_field "filter_#{filter.name}", options
end

#render_solr_filter_date_range(form, filter, options) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/multi_solr/rails_form_render_helper.rb', line 42

def render_solr_filter_date_range form, filter, options
  add_class options, 'datepicker'
  value = form.object.send("filter_#{filter.name}")
  return nil if value.blank? || !value.is_a?(Hash) || value.empty?
  from = value["#{filter.name}_from"]
  to = value["#{filter.name}_to"]
  date_range = Struct.new("#{filter.name}_from".to_sym, "#{filter.name}_to".to_sym).new from,to
  form.fields_for "filter_#{filter.name}", date_range do |fields_form|
    fields_form.template.concat("<label>ab</label>".html_safe)
    fields_form.template.concat(fields_form.text_field("#{filter.name}_from", options))
    fields_form.template.concat("<label>bis</label>".html_safe)
    fields_form.template.concat(fields_form.text_field("#{filter.name}_to", options))
  end
end

#render_solr_filter_for_form(form, filter_name, options = {}) ⇒ Object

Generieren der HML-Form-Felder (input/select/..) für den angegeben Filter Params:

form:         das Rails-Form-Object, dieses MUSS als Object eine MultiSolr::SearchRequest-Instance haben
filter_name:  Name des Filters als Symbol (die SearchRequest-Instance im Form muss diesen Filter kennen)
options:      optionale Formular-Input-Feld-Options. Beschreibung => siehe jeweilige Beschreibung je Filter-Methode
              Diese werden i.d.R. an die Rails-Form-Methode 'text_field' weitergegeben.

returns: HTML-Code des Input-Feldes als String



12
13
14
15
16
17
18
19
20
21
22
# File 'lib/multi_solr/rails_form_render_helper.rb', line 12

def render_solr_filter_for_form form, filter_name, options={}
  cur_options = options.clone
  search_request = form.object
  filter = search_request.class.possible_filters[filter_name]
  raise "unknown filter: #{filter_name}" if filter.nil?
  label = cur_options.delete(:label) || filter.label
  render_method = "render_#{filter.class.to_s.underscore}"
  render_method.gsub!("/", '_')
  render_method.gsub!("multi_solr_", '')
  "<label>#{label}</label>".html_safe + send(render_method, form, filter, cur_options)
end

#render_solr_filter_free_query(form, filter, options) ⇒ Object



68
69
70
71
# File 'lib/multi_solr/rails_form_render_helper.rb', line 68

def render_solr_filter_free_query form, filter, options
  add_class options, 'free_query'
  form.text_field "filter_#{filter.name}", options
end

#render_solr_filter_simple(form, filter, options) ⇒ Object

generiert für einen SolrFilterSimple einen input-tag vom typ text mit der css-class “simple”



27
28
29
30
# File 'lib/multi_solr/rails_form_render_helper.rb', line 27

def render_solr_filter_simple form, filter, options
  add_class options, 'simple'
  form.text_field "filter_#{filter.name}", options
end