Class: Formtastic::FormBuilder

Inherits:
ActionView::Helpers::FormBuilder
  • Object
show all
Includes:
Helpers::ActionHelper, Helpers::ActionsHelper, Helpers::ErrorsHelper, Helpers::InputHelper, Helpers::InputsHelper
Defined in:
lib/formtastic/form_builder.rb

Constant Summary

Constants included from Helpers::ErrorsHelper

Helpers::ErrorsHelper::INLINE_ERROR_TYPES

Constants included from Helpers::InputsHelper

Helpers::InputsHelper::SKIPPED_COLUMNS

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Helpers::ErrorsHelper

#semantic_errors

Methods included from LocalizedString

#model_name

Methods included from Helpers::ActionsHelper

#actions

Methods included from Helpers::ActionHelper

#action

Methods included from Helpers::InputsHelper

#inputs

Methods included from Helpers::InputHelper

#input

Constructor Details

#initialize(object_name, object, template, options, block = nil) ⇒ FormBuilder

Returns a new instance of FormBuilder.



84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/formtastic/form_builder.rb', line 84

def initialize(object_name, object, template, options, block=nil)
  # rails 3 supported passing in the block parameter to FormBuilder
  # rails 4.0 deprecated the block parameter and does nothing with it
  # rails 4.1 removes the parameter completely
  if Util.rails3? || Util.rails4_0?
    super
  else # Must be rails4_1 or greater
    super object_name, object, template, options
  end
  
  if respond_to?('multipart=') && options.is_a?(Hash) && options[:html]
    self.multipart = options[:html][:multipart]
  end
end

Instance Attribute Details

#auto_indexObject (readonly)

Returns the value of attribute auto_index.



37
38
39
# File 'lib/formtastic/form_builder.rb', line 37

def auto_index
  @auto_index
end

#templateObject (readonly)

Returns the value of attribute template.



35
36
37
# File 'lib/formtastic/form_builder.rb', line 35

def template
  @template
end

Class Method Details

.configure(name, value = nil) ⇒ Object



4
5
6
7
# File 'lib/formtastic/form_builder.rb', line 4

def self.configure(name, value = nil)
  class_attribute(name)
  self.send(:"#{name}=", value)
end

Instance Method Details

#semantic_fields_for(record_or_name_or_array, *args, &block) ⇒ Object

TODO:

is there a way to test the params structure of the Rails helper we wrap to ensure forward compatibility?

This is a wrapper around Rails' ActionView::Helpers::FormBuilder#fields_for, originally provided to ensure that the :builder from semantic_form_for was passed down into the nested fields_for. Rails 3 no longer requires us to do this, so this method is provided purely for backwards compatibility and DSL consistency.

When constructing a fields_for form fragment outside of semantic_form_for, please use Formtastic::Helpers::FormHelper#semantic_fields_for.

Examples:

<% semantic_form_for @post do |post| %>
  <% post.semantic_fields_for :author do |author| %>
    <% author.inputs :name %>
  <% end %>
<% end %>

<form ...>
  <fieldset class="inputs">
    <ol>
      <li class="string"><input type='text' name='post[author][name]' id='post_author_name' /></li>
    </ol>
  </fieldset>
</form>

See Also:



75
76
77
78
79
80
81
82
# File 'lib/formtastic/form_builder.rb', line 75

def semantic_fields_for(record_or_name_or_array, *args, &block)
  # Add a :parent_builder to the args so that nested translations can be possible in Rails 3
  options = args.extract_options!
  options[:parent_builder] ||= self
  
  # Wrap the Rails helper
  fields_for(record_or_name_or_array, *(args << options), &block)
end