Module: BootstrapFormExtensions::SelectOrNew
- Includes:
- Helpers
- Defined in:
- lib/bootstrap_form_extensions/select_or_new.rb
Instance Method Summary collapse
Methods included from Helpers
#glyphicon_tag, #merge_css_classes, #true?
Instance Method Details
#select_or_new(method, choices = [], options = {}, html_options = {}) ⇒ Object
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 |
# File 'lib/bootstrap_form_extensions/select_or_new.rb', line 7 def select_or_new method, choices = [], = {}, = {} new_is_selected = object.send(method) == 0 # select... .delete :prompt .delete :include_blank choices.unshift [ "Please select", nil ] choices.push [ "New...", 0 ] [:class] = merge_css_classes 'form-control', [:class] [:style] = 'display: none;' if new_is_selected select = self.select_without_bootstrap method, choices, , # ... or new icon = @template.glyphicon_tag 'remove', class: 'text-danger' icon = content_tag :div, icon, class: 'input-group-addon select-or-new-cancel' new_method = "new_#{method.to_s.sub(/_id$/, '')}" new_field_name = "#{object_name}[#{new_method}]" text = @template.text_field_tag new_field_name, object.try(new_method), class: 'form-control', placeholder: 'New...' text = content_tag :div, text + icon, class: 'input-group', style: (new_is_selected ? '' : 'display: none;') # form group to put them together [:wrapper] ||= {} [:wrapper][:data] ||= {} [:wrapper][:data][:select_or_new] = true form_group_builder(method, , ) { select + text } end |