Sha256: b1c8cd425a5841dbef1d9811d7058f4957de7f83e4d7dedc4b272fd96e071646
Contents?: true
Size: 1.72 KB
Versions: 11
Compression:
Stored size: 1.72 KB
Contents
# frozen_string_literal: true module MrCommon # Default form builder for the app. Slightly customized to provide methods for # .form-group divs and error text class ApplicationFormBuilder < ActionView::Helpers::FormBuilder # 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> # def form_group(method_or_methods = nil, options = {}, &block) div_classes = ["form-group"] div_classes << "required" if options[:required] div_classes << options.delete(:class) if options[: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 def _error_for_any?(methods) Array[methods].flatten.find { |m| object.errors[m].any? } end # Outputs an error message tag when errors are present on the given field # # <%= f.errors :email %> # # => # <div class="error-message">is invalid</div> # def errors(method, options = {}) return nil unless object.errors[method].any? text = options.delete(:text) || object.errors[method].join(", ") div_classes = options.delete(:class) || "error-message" @template.content_tag(:div, text, class: div_classes) end end end
Version data entries
11 entries across 11 versions & 1 rubygems