Class: MrCommon::ApplicationFormBuilder
- Inherits:
-
ActionView::Helpers::FormBuilder
- Object
- ActionView::Helpers::FormBuilder
- MrCommon::ApplicationFormBuilder
- Defined in:
- app/form/mr_common/application_form_builder.rb
Overview
Default form builder for the app. Slightly customized to provide methods for .form-group divs and error text
Instance Method Summary collapse
- #_error_for_any?(methods) ⇒ Boolean
-
#errors(method, options = {}) ⇒ Object
Outputs an error message tag when errors are present on the given field.
-
#form_group(method_or_methods = nil, options = {}, &block) ⇒ Object
wraps a block in a .form-group div, applies an .error class when the given field has errors.
Instance Method Details
#_error_for_any?(methods) ⇒ Boolean
34 35 36 |
# File 'app/form/mr_common/application_form_builder.rb', line 34 def _error_for_any?(methods) Array[methods].flatten.find { |m| object.errors[m].any? } end |
#errors(method, options = {}) ⇒ Object
Outputs an error message tag when errors are present on the given field
<%= f.errors :email %>
=>
<div class="error-message">is invalid</div>
45 46 47 48 49 50 51 |
# File 'app/form/mr_common/application_form_builder.rb', line 45 def errors(method, = {}) return nil unless object.errors[method].any? text = .delete(:text) || object.errors[method].join(", ") div_classes = .delete(:class) || "error-message" @template.content_tag(:div, text, class: div_classes) end |
#form_group(method_or_methods = nil, options = {}, &block) ⇒ Object
wraps a block in a .form-group div, applies an .error class when the given field has errors
<%= f.form_group :email do %>
<%= f.label :email %>
<%= f.email_field :email, class: 'form-control' %>
<% end %>
=>
<div class="form-group">
<label for="Registration_email">Email</label>
<input class="form-control" value="asdf@asdfasdf" name="Registration[email]" id="Registration_email" type="email">
</div>
21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'app/form/mr_common/application_form_builder.rb', line 21 def form_group(method_or_methods = nil, = {}, &block) div_classes = ["form-group"] div_classes << "required" if [:required] div_classes << .delete(:class) if [:class] div_classes << "error" if _error_for_any?(method_or_methods) div_classes = div_classes.join(" ") @template.content_tag(:div, class: div_classes) do yield block end end |