class MongoidForm::FormBuilder
Constants
- SKIP_WRAP_FOR
Public Instance Methods
any_errors?()
click to toggle source
# File lib/mongoid_form/form_builder.rb, line 43 def any_errors? @object && @object.respond_to?(:errors) && @object.errors.present? end
error_message_for(name)
click to toggle source
# File lib/mongoid_form/form_builder.rb, line 33 def error_message_for(name) if any_errors? && has_error?(name) alert { get_error(name) } end end
error_notification()
click to toggle source
# File lib/mongoid_form/form_builder.rb, line 27 def error_notification if any_errors? && wrapper.main_error_i18n_key.present? alert { I18n::t(*wrapper.main_error_i18n_key, model: @object.class.model_name.human, count: @object.errors.size) } end end
has_error?(name)
click to toggle source
# File lib/mongoid_form/form_builder.rb, line 47 def has_error?(name) return false unless any_errors? @object.errors.messages[name].present? end
localized_field(type, attribute, options = {})
click to toggle source
# File lib/mongoid_form/form_builder.rb, line 14 def localized_field(type, attribute, options = {}) @type = type attribute, options = value_field(attribute, options) case type when :text text_field(attribute, options) when :text_area text_area(attribute, options) else "" end end
localized_fields(field, options = {}, &block)
click to toggle source
# File lib/mongoid_form/form_builder.rb, line 6 def localized_fields(field, options = {}, &block) field_name = "#{field}_translations" object = @object.send(field_name).try(:empty?) ? nil : @object.send(field_name) name = "#{object_name}[#{field_name}]" @template.fields_for(name, object, &block) end
required?(method)
click to toggle source
# File lib/mongoid_form/form_builder.rb, line 39 def required?(method) @object && @object.class.validators_on(method).map(&:class).include?(Mongoid::Validations::PresenceValidator) end
Private Instance Methods
alert() { || ... }
click to toggle source
# File lib/mongoid_form/form_builder.rb, line 161 def alert(&block) inner = yield.html_safe wrap inner, wrapper.alert_error_wrapper end
asterisk(name)
click to toggle source
# File lib/mongoid_form/form_builder.rb, line 118 def asterisk(name) required?(name) && wrapper.add_if_required.present? ? @template.content_tag(*wrapper.add_if_required) + ' ' : '' end
error(name)
click to toggle source
# File lib/mongoid_form/form_builder.rb, line 122 def error(name) if has_error?(name) wrapper.error_block.present? ? wrap(get_error(name), wrapper.error_block) : get_error(name) else '' end end
factory(type, name, options = {})
click to toggle source
# File lib/mongoid_form/form_builder.rb, line 54 def factory(type, name, options = {}) @type = type input = case type when :text text_field name, options when :password password_field name, options when :select options[:collection] ||= [] select name, options[:collection], options when :number number_field name, options when :text_area text_area name, options when :check_box check_box name, options when :hidden hidden_field name, options when :file file_field name, options end (SKIP_WRAP_FOR.include?(type) || wrapper.nil?) ? input : wrap_field(input, name) end
get_error(name)
click to toggle source
# File lib/mongoid_form/form_builder.rb, line 130 def get_error(name) error = get_errors(name) error = error.first if error.is_a?(Array) error end
get_errors(name)
click to toggle source
# File lib/mongoid_form/form_builder.rb, line 136 def get_errors(name) @object.errors.messages[name] end
input_wrapped(input, name)
click to toggle source
# File lib/mongoid_form/form_builder.rb, line 140 def input_wrapped(input, name) wrapper.input_wrapper.present? ? wrap((input + error(name)), wrapper.input_wrapper) : (input + error(name)) end
value_field(attribute, options)
click to toggle source
# File lib/mongoid_form/form_builder.rb, line 166 def value_field(attribute, options) value = @object ? @object[attribute.to_s] : nil options = options.merge(value: value) return attribute, options end
wrap(content, options)
click to toggle source
# File lib/mongoid_form/form_builder.rb, line 112 def wrap(content, options) @template.content_tag *options do content end end
wrap_field(input, name)
click to toggle source
# File lib/mongoid_form/form_builder.rb, line 78 def wrap_field(input, name) label_options = wrapper.label_options.dup extracted = label_options.extract_options! extracted_class = extracted[:class] ? extracted[:class] + ' ' : '' options = extracted.merge(class: extracted_class + @type.to_s) label_options << options label = label(name, *label_options) do asterisk(name) + @object.class.human_attribute_name(name) end wrap_group(input, name, label) end
wrap_group(input, name, label)
click to toggle source
# File lib/mongoid_form/form_builder.rb, line 144 def wrap_group(input, name, label) if wrapper.group_wrapper.present? group_wrapper = wrapper.group_wrapper.dup if has_error?(name) && wrapper.group_error_class extracted = group_wrapper.extract_options! extracted_class = extracted[:class] ? extracted[:class] + ' ' : '' options = extracted.merge(class: extracted_class + wrapper.group_error_class.first) group_wrapper << options end wrap (label + input_wrapped(input, name)), group_wrapper else label + input_wrapped(input, name) end end
wrap_localized_fields(builder, type, options)
click to toggle source
# File lib/mongoid_form/form_builder.rb, line 92 def wrap_localized_fields(builder, type, options) name = builder.object_name.scan(/\[(.*)_translations\]/).join.to_sym result = '' I18n.available_locales.each do |locale| field = builder.object_name.scan(/(.*)\[(.*)_translations\]/).join('.') flag = wrapper.flag_for_localized.first ? wrap('', [:div, class: "flag flags-#{locale.to_s}"]) : '' label = builder.label locale.to_sym, *wrapper.label_options do asterisk(name).html_safe + I18n::t("mongoid.attributes.#{field}") + flag end input = builder.localized_field type, locale.to_sym, options result << wrap_group(input, name, label) end result.html_safe end
wrapper()
click to toggle source
# File lib/mongoid_form/form_builder.rb, line 108 def wrapper @options[:wrapper] ? MongoidForm.wrappers(@options[:wrapper]) : nil end