Class: ReddeFormBuilder
- Inherits:
-
ActionView::Helpers::FormBuilder
- Object
- ActionView::Helpers::FormBuilder
- ReddeFormBuilder
- Defined in:
- app/form_builders/redde_form_builder.rb
Instance Method Summary collapse
- #empty_wrap(*args, &block) ⇒ Object
- #error_messages(attrs = {}) ⇒ Object
- #fieldset(name, *args, &block) ⇒ Object
- #redde_check_box(name, *args) ⇒ Object
- #redde_date_time(name, *args) ⇒ Object
-
#redde_field(name, *args) ⇒ Object
delegate :debug, :render, :content_tag, :tag, :link_to, :concat, :capture, to: :@template.
- #redde_file_field(name, *args) ⇒ Object
- #redde_image_field(name, *args) ⇒ Object
- #redde_select(name, choices, opts = {}, *args) ⇒ Object
- #redde_submit(text, opts) ⇒ Object
- #redde_submits(*args, &block) ⇒ Object
- #redde_text_area(name, *args) ⇒ Object
- #redde_text_field(name, *args) ⇒ Object
- #wrap(name = nil, *args, &block) ⇒ Object
Instance Method Details
#empty_wrap(*args, &block) ⇒ Object
96 97 98 99 100 |
# File 'app/form_builders/redde_form_builder.rb', line 96 def empty_wrap(*args, &block) = args. content = block_given? ? capture(&block) : args[0] content_tag( :tr, tag( :td, class: ['redde-form__cell', [:cell]].flatten.compact ) + content_tag( :td, content, class: ['redde-form__cell', [:cell]] ), class: ['redde-form__row', [:wrap]].flatten.compact ) end |
#error_messages(attrs = {}) ⇒ Object
90 91 92 93 94 |
# File 'app/form_builders/redde_form_builder.rb', line 90 def (attrs = {}) if object.errors..any? render 'admin/redde/validate', { f: self, attrs: attrs } end end |
#fieldset(name, *args, &block) ⇒ Object
108 109 110 111 112 113 114 |
# File 'app/form_builders/redde_form_builder.rb', line 108 def fieldset(name, *args, &block) = args. content_tag(:tbody, class: ['redde-form__fieldset', [:class]].flatten.compact) do concat content_tag(:tr, content_tag(:th, name, colspan: 2, class: 'redde-form__thead')) concat capture(&block) end end |
#redde_check_box(name, *args) ⇒ Object
32 33 34 35 36 37 38 |
# File 'app/form_builders/redde_form_builder.rb', line 32 def redde_check_box(name, *args) = args. content_tag :tr, class: [:wrapper_class] do concat tag :td concat content_tag :td, check_box(name, ) + " " + smart_label(name), class: 'redde-form__cell' end end |
#redde_date_time(name, *args) ⇒ Object
27 28 29 30 |
# File 'app/form_builders/redde_form_builder.rb', line 27 def redde_date_time(name, *args) = args. wrap(name, datetime_select(name, ), ) end |
#redde_field(name, *args) ⇒ Object
delegate :debug, :render, :content_tag, :tag, :link_to, :concat, :capture, to: :@template
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'app/form_builders/redde_form_builder.rb', line 5 def redde_field(name, *args) label(name) case object.class.columns.detect { |column| column.name == name.to_s }.try(:type) when :text then redde_text_area(name, *args) when :boolean then redde_check_box(name, *args) when :time then redde_date_time(name, *args) when :datetime then redde_date_time(name, *args) else if object.send(name).class.superclass.name == 'CarrierWave::Uploader::Base' redde_image_field(name, *args) else redde_text_field(name, *args) end end end |
#redde_file_field(name, *args) ⇒ Object
54 55 56 57 58 59 60 61 62 63 |
# File 'app/form_builders/redde_form_builder.rb', line 54 def redde_file_field(name, *args) = args. wrap(name, ) do content_tag(:span, class: ['redde-form__file rfile jsr-file', [:class]]) do concat content_tag :span, raw('Загрузить') + content_tag(:span, file_field(name, .merge(class: 'rfile__inp')), class: 'rfile__wrap jsr-file--wrap'), class: 'rfile__btn btn icon-upload' concat content_tag(:span, '', class: 'rfile__name jsr-file--name') concat content_tag(:span, raw(' '), title: 'удалить', class: 'rfile__del jsr-file--del', hidden: "") end end end |
#redde_image_field(name, *args) ⇒ Object
46 47 48 49 50 51 52 |
# File 'app/form_builders/redde_form_builder.rb', line 46 def redde_image_field(name, *args) html = redde_file_field(name, *args) if object.send(name).present? html = empty_wrap(image_tag(object.send(name), class: 'redde-form__img-preview') + check_box("remove_#{name}") + label("remove_#{name}")).concat(html) end html end |
#redde_select(name, choices, opts = {}, *args) ⇒ Object
21 22 23 24 25 |
# File 'app/form_builders/redde_form_builder.rb', line 21 def redde_select(name, choices, opts = {}, *args) = args. [:class] = assign_class(['sel', 'redde-form__sel'], [:class]) wrap(name, select(name, choices, opts, .except(:wrap, :cell)), ) end |
#redde_submit(text, opts) ⇒ Object
71 72 73 74 75 76 |
# File 'app/form_builders/redde_form_builder.rb', line 71 def redde_submit(text, opts) css_class = ['sbm'] css_class << opts[:class] if opts[:class].present? css_class << '_save' if text == 'Сохранить' (text, class: css_class, value: text, name: :commit) end |
#redde_submits(*args, &block) ⇒ Object
78 79 80 81 82 83 84 85 86 87 88 |
# File 'app/form_builders/redde_form_builder.rb', line 78 def redde_submits *args, &block content_tag :tfoot do content_tag :tr do content_tag :td, colspan: 2, class: 'redde-form__actions' do concat redde_submit('Сохранить', class: 'redde-form__sbm') concat redde_submit('Применить', class: 'redde-form__sbm') concat capture(&block) if block_given? end end end end |
#redde_text_area(name, *args) ⇒ Object
65 66 67 68 69 |
# File 'app/form_builders/redde_form_builder.rb', line 65 def redde_text_area(name, *args) = args. [:class] = assign_class(['txtr', 'redde-form__txtr'], [:class]) wrap(name, text_area(name, ), ) end |
#redde_text_field(name, *args) ⇒ Object
40 41 42 43 44 |
# File 'app/form_builders/redde_form_builder.rb', line 40 def redde_text_field(name, *args) = args. [:class] = assign_class(['inp', 'redde-form__inp'], [:class]) wrap(name, text_field(name, ), ) end |
#wrap(name = nil, *args, &block) ⇒ Object
102 103 104 105 106 |
# File 'app/form_builders/redde_form_builder.rb', line 102 def wrap(name = nil, *args, &block) = args. content = block_given? ? capture(&block) : args[0] content_tag( :tr, content_tag( :td, smart_label(name), class: ['redde-form__cell', '_label', [:cell]].flatten.compact ) + content_tag( :td, content, class: ['redde-form__cell', [:cell]] ), class: ['redde-form__row', ('_error' if object.errors[name].any?), [:wrap]].flatten.compact ) end |