Class: ActionView::Helpers::FormBuilder
- Inherits:
-
Object
- Object
- ActionView::Helpers::FormBuilder
- Defined in:
- lib/action_view/helpers/date_helper.rb,
lib/action_view/helpers/form_helper.rb,
lib/action_view/helpers/form_options_helper.rb
Instance Attribute Summary collapse
-
#multipart ⇒ Object
(also: #multipart?)
Returns the value of attribute multipart.
-
#object ⇒ Object
Returns the value of attribute object.
-
#object_name ⇒ Object
Returns the value of attribute object_name.
-
#options ⇒ Object
Returns the value of attribute options.
-
#parent_builder ⇒ Object
readonly
Returns the value of attribute parent_builder.
Class Method Summary collapse
Instance Method Summary collapse
- #check_box(method, options = {}, checked_value = "1", unchecked_value = "0") ⇒ Object
- #collection_select(method, collection, value_method, text_method, options = {}, html_options = {}) ⇒ Object
- #date_select(method, options = {}, html_options = {}) ⇒ Object
- #datetime_select(method, options = {}, html_options = {}) ⇒ Object
- #emitted_hidden_id? ⇒ Boolean
- #fields_for(record_name, record_object = nil, fields_options = {}, &block) ⇒ Object
- #file_field(method, options = {}) ⇒ Object
- #grouped_collection_select(method, collection, group_method, group_label_method, option_key_method, option_value_method, options = {}, html_options = {}) ⇒ Object
- #hidden_field(method, options = {}) ⇒ Object
-
#initialize(object_name, object, template, options, proc) ⇒ FormBuilder
constructor
A new instance of FormBuilder.
- #label(method, text = nil, options = {}, &block) ⇒ Object
- #radio_button(method, tag_value, options = {}) ⇒ Object
- #select(method, choices, options = {}, html_options = {}) ⇒ Object
-
#submit(value = nil, options = {}) ⇒ Object
Add the submit button for the given form.
- #time_select(method, options = {}, html_options = {}) ⇒ Object
- #time_zone_select(method, priority_zones = nil, options = {}, html_options = {}) ⇒ Object
- #to_model ⇒ Object
Constructor Details
#initialize(object_name, object, template, options, proc) ⇒ FormBuilder
Returns a new instance of FormBuilder.
1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 |
# File 'lib/action_view/helpers/form_helper.rb', line 1226 def initialize(object_name, object, template, , proc) @nested_child_index = {} @object_name, @object, @template, @options, @proc = object_name, object, template, , proc @parent_builder = [:parent_builder] @default_options = @options ? @options.slice(:index) : {} if @object_name.to_s.match(/\[\]$/) if object ||= @template.instance_variable_get("@#{Regexp.last_match.pre_match}") and object.respond_to?(:to_param) @auto_index = object.to_param else raise ArgumentError, "object[] naming but object param and @object var don't exist or don't respond to to_param: #{object.inspect}" end end @multipart = nil end |
Instance Attribute Details
#multipart ⇒ Object Also known as: multipart?
Returns the value of attribute multipart.
1210 1211 1212 |
# File 'lib/action_view/helpers/form_helper.rb', line 1210 def multipart @multipart end |
#object ⇒ Object
Returns the value of attribute object.
1208 1209 1210 |
# File 'lib/action_view/helpers/form_helper.rb', line 1208 def object @object end |
#object_name ⇒ Object
Returns the value of attribute object_name.
1208 1209 1210 |
# File 'lib/action_view/helpers/form_helper.rb', line 1208 def object_name @object_name end |
#options ⇒ Object
Returns the value of attribute options.
1208 1209 1210 |
# File 'lib/action_view/helpers/form_helper.rb', line 1208 def @options end |
#parent_builder ⇒ Object (readonly)
Returns the value of attribute parent_builder.
1210 1211 1212 |
# File 'lib/action_view/helpers/form_helper.rb', line 1210 def parent_builder @parent_builder end |
Class Method Details
.model_name ⇒ Object
1218 1219 1220 |
# File 'lib/action_view/helpers/form_helper.rb', line 1218 def self.model_name @model_name ||= Struct.new(:partial_path).new(name.demodulize.underscore.sub!(/_builder$/, '')) end |
Instance Method Details
#check_box(method, options = {}, checked_value = "1", unchecked_value = "0") ⇒ Object
1283 1284 1285 |
# File 'lib/action_view/helpers/form_helper.rb', line 1283 def check_box(method, = {}, checked_value = "1", unchecked_value = "0") @template.check_box(@object_name, method, (), checked_value, unchecked_value) end |
#collection_select(method, collection, value_method, text_method, options = {}, html_options = {}) ⇒ Object
613 614 615 |
# File 'lib/action_view/helpers/form_options_helper.rb', line 613 def collection_select(method, collection, value_method, text_method, = {}, = {}) @template.collection_select(@object_name, method, collection, value_method, text_method, (), @default_options.merge()) end |
#date_select(method, options = {}, html_options = {}) ⇒ Object
1026 1027 1028 |
# File 'lib/action_view/helpers/date_helper.rb', line 1026 def date_select(method, = {}, = {}) @template.date_select(@object_name, method, (), ) end |
#datetime_select(method, options = {}, html_options = {}) ⇒ Object
1034 1035 1036 |
# File 'lib/action_view/helpers/date_helper.rb', line 1034 def datetime_select(method, = {}, = {}) @template.datetime_select(@object_name, method, (), ) end |
#emitted_hidden_id? ⇒ Boolean
1334 1335 1336 |
# File 'lib/action_view/helpers/form_helper.rb', line 1334 def emitted_hidden_id? @emitted_hidden_id ||= nil end |
#fields_for(record_name, record_object = nil, fields_options = {}, &block) ⇒ Object
1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 |
# File 'lib/action_view/helpers/form_helper.rb', line 1253 def fields_for(record_name, record_object = nil, = {}, &block) , record_object = record_object, nil if record_object.is_a?(Hash) && record_object. [:builder] ||= [:builder] [:parent_builder] = self case record_name when String, Symbol if nested_attributes_association?(record_name) return fields_for_with_nested_attributes(record_name, record_object, , block) end else record_object = record_name.is_a?(Array) ? record_name.last : record_name record_name = ActiveModel::Naming.param_key(record_object) end index = if .has_key?(:index) "[#{[:index]}]" elsif defined?(@auto_index) self.object_name = @object_name.to_s.sub(/\[\]$/,"") "[#{@auto_index}]" end record_name = "#{object_name}#{index}[#{record_name}]" @template.fields_for(record_name, record_object, , &block) end |
#file_field(method, options = {}) ⇒ Object
1296 1297 1298 1299 |
# File 'lib/action_view/helpers/form_helper.rb', line 1296 def file_field(method, = {}) self.multipart = true @template.file_field(@object_name, method, ()) end |
#grouped_collection_select(method, collection, group_method, group_label_method, option_key_method, option_value_method, options = {}, html_options = {}) ⇒ Object
617 618 619 |
# File 'lib/action_view/helpers/form_options_helper.rb', line 617 def grouped_collection_select(method, collection, group_method, group_label_method, option_key_method, option_value_method, = {}, = {}) @template.grouped_collection_select(@object_name, method, collection, group_method, group_label_method, option_key_method, option_value_method, (), @default_options.merge()) end |
#hidden_field(method, options = {}) ⇒ Object
1291 1292 1293 1294 |
# File 'lib/action_view/helpers/form_helper.rb', line 1291 def hidden_field(method, = {}) @emitted_hidden_id = true if method == :id @template.hidden_field(@object_name, method, ()) end |
#label(method, text = nil, options = {}, &block) ⇒ Object
1279 1280 1281 |
# File 'lib/action_view/helpers/form_helper.rb', line 1279 def label(method, text = nil, = {}, &block) @template.label(@object_name, method, text, (), &block) end |
#radio_button(method, tag_value, options = {}) ⇒ Object
1287 1288 1289 |
# File 'lib/action_view/helpers/form_helper.rb', line 1287 def (method, tag_value, = {}) @template.(@object_name, method, tag_value, ()) end |
#select(method, choices, options = {}, html_options = {}) ⇒ Object
609 610 611 |
# File 'lib/action_view/helpers/form_options_helper.rb', line 609 def select(method, choices, = {}, = {}) @template.select(@object_name, method, choices, (), @default_options.merge()) end |
#submit(value = nil, options = {}) ⇒ Object
Add the submit button for the given form. When no value is given, it checks if the object is a new resource or not to create the proper label:
<%= form_for @post do |f| %>
<%= f.submit %>
<% end %>
In the example above, if @post is a new record, it will use “Create Post” as submit button label, otherwise, it uses “Update Post”.
Those labels can be customized using I18n, under the helpers.submit key and accept the %model as translation interpolation:
en:
helpers:
submit:
create: "Create a %{model}"
update: "Confirm changes to %{model}"
It also searches for a key specific for the given object:
en:
helpers:
submit:
post:
create: "Add %{model}"
1328 1329 1330 1331 1332 |
# File 'lib/action_view/helpers/form_helper.rb', line 1328 def submit(value=nil, ={}) value, = nil, value if value.is_a?(Hash) value ||= submit_default_value @template.submit_tag(value, ) end |
#time_select(method, options = {}, html_options = {}) ⇒ Object
1030 1031 1032 |
# File 'lib/action_view/helpers/date_helper.rb', line 1030 def time_select(method, = {}, = {}) @template.time_select(@object_name, method, (), ) end |
#time_zone_select(method, priority_zones = nil, options = {}, html_options = {}) ⇒ Object
621 622 623 |
# File 'lib/action_view/helpers/form_options_helper.rb', line 621 def time_zone_select(method, priority_zones = nil, = {}, = {}) @template.time_zone_select(@object_name, method, priority_zones, (), @default_options.merge()) end |
#to_model ⇒ Object
1222 1223 1224 |
# File 'lib/action_view/helpers/form_helper.rb', line 1222 def to_model self end |