Module: MultiSolr::RailsFormRenderHelper
- Defined in:
- lib/multi_solr/rails_form_render_helper.rb
Instance Method Summary collapse
- #render_solr_filter_collection(form, filter, options) ⇒ Object
-
#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.
- #render_solr_filter_date_range(form, filter, options) ⇒ Object
-
#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.
- #render_solr_filter_free_query(form, filter, options) ⇒ Object
-
#render_solr_filter_simple(form, filter, options) ⇒ Object
generiert für einen SolrFilterSimple einen input-tag vom typ text mit der css-class “simple”.
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, add_class , 'collection' core_handler = .delete(:core_handler) context = .delete(:context) data = filter.collection_data(core_handler, context) form.select "filter_#{filter.name}", data, 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, add_class , 'datepicker' form.text_field "filter_#{filter.name}", 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, add_class , '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", )) fields_form.template.concat("<label>bis</label>".html_safe) fields_form.template.concat(fields_form.text_field("#{filter.name}_to", )) 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, ={} = .clone search_request = form.object filter = search_request.class.possible_filters[filter_name] raise "unknown filter: #{filter_name}" if filter.nil? label = .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, ) 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, add_class , 'free_query' form.text_field "filter_#{filter.name}", 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, add_class , 'simple' form.text_field "filter_#{filter.name}", end |