Class: Polaris::FormBuilder
- Inherits:
-
ActionView::Helpers::FormBuilder
- Object
- ActionView::Helpers::FormBuilder
- Polaris::FormBuilder
- Includes:
- ActionView::Helpers::OutputSafetyHelper
- Defined in:
- app/helpers/polaris/form_builder.rb
Instance Attribute Summary collapse
-
#template ⇒ Object
readonly
Returns the value of attribute template.
Instance Method Summary collapse
- #error_for(method) ⇒ Object
- #errors_summary ⇒ Object
- #polaris_check_box(method, **options, &block) ⇒ Object
- #polaris_dropzone(method, **options, &block) ⇒ Object
- #polaris_inline_error_for(method, **options, &block) ⇒ Object
- #polaris_radio_button(method, **options, &block) ⇒ Object
- #polaris_select(method, **options, &block) ⇒ Object
- #polaris_text_field(method, **options, &block) ⇒ Object
Instance Attribute Details
#template ⇒ Object (readonly)
Returns the value of attribute template.
5 6 7 |
# File 'app/helpers/polaris/form_builder.rb', line 5 def template @template end |
Instance Method Details
#error_for(method) ⇒ Object
31 32 33 34 35 36 |
# File 'app/helpers/polaris/form_builder.rb', line 31 def error_for(method) return if object.blank? return unless object.errors.key?(method) raw object.errors.(method)&.first end |
#errors_summary ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'app/helpers/polaris/form_builder.rb', line 9 def errors_summary return if object.blank? return unless object.errors.any? title = I18n.t( "polaris.form_builder.errors_summary", count: object.errors.count, model: object.class.model_name.human.downcase ) render Polaris::BannerComponent.new(title: title, status: :critical, within: :container) do || [ render(Polaris::ListComponent.new) do |list| object.errors..each do |error| list.item { error.html_safe } end end, (template.capture { yield() } if block_given?) ].compact.join.html_safe end end |
#polaris_check_box(method, **options, &block) ⇒ Object
67 68 69 70 71 72 73 |
# File 'app/helpers/polaris/form_builder.rb', line 67 def polaris_check_box(method, **, &block) [:error] ||= error_for(method) if [:error_hidden] && [:error] [:error] = !![:error] end render Polaris::CheckboxComponent.new(form: self, attribute: method, **, &block) end |
#polaris_dropzone(method, **options, &block) ⇒ Object
83 84 85 86 87 88 89 |
# File 'app/helpers/polaris/form_builder.rb', line 83 def polaris_dropzone(method, **, &block) [:error] ||= error_for(method) if [:error_hidden] && [:error] [:error] = !![:error] end render Polaris::DropzoneComponent.new(form: self, attribute: method, **, &block) end |
#polaris_inline_error_for(method, **options, &block) ⇒ Object
38 39 40 41 42 43 44 45 |
# File 'app/helpers/polaris/form_builder.rb', line 38 def polaris_inline_error_for(method, **, &block) = error_for(method) return unless render(Polaris::InlineErrorComponent.new(**, &block)) do end end |
#polaris_radio_button(method, **options, &block) ⇒ Object
75 76 77 78 79 80 81 |
# File 'app/helpers/polaris/form_builder.rb', line 75 def (method, **, &block) [:error] ||= error_for(method) if [:error_hidden] && [:error] [:error] = !![:error] end render Polaris::RadioButtonComponent.new(form: self, attribute: method, **, &block) end |
#polaris_select(method, **options, &block) ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 |
# File 'app/helpers/polaris/form_builder.rb', line 55 def polaris_select(method, **, &block) [:error] ||= error_for(method) if [:error_hidden] && [:error] [:error] = !![:error] end value = object&.public_send(method) if value.present? [:selected] = value end render Polaris::SelectComponent.new(form: self, attribute: method, **, &block) end |
#polaris_text_field(method, **options, &block) ⇒ Object
47 48 49 50 51 52 53 |
# File 'app/helpers/polaris/form_builder.rb', line 47 def polaris_text_field(method, **, &block) [:error] ||= error_for(method) if [:error_hidden] && [:error] [:error] = !![:error] end render Polaris::TextFieldComponent.new(form: self, attribute: method, **, &block) end |