- #
- B
- C
- D
- E
- F
- G
- H
- L
- M
- N
- R
- S
- T
[RW] | object_name | |
[RW] | object | |
[RW] | options | |
[R] | multipart | |
[R] | parent_builder |
# File actionpack/lib/action_view/helpers/form_helper.rb, line 1266 1266: def initialize(object_name, object, template, options, proc) 1267: @nested_child_index = {} 1268: @object_name, @object, @template, @options, @proc = object_name, object, template, options, proc 1269: @parent_builder = options[:parent_builder] 1270: @default_options = @options ? @options.slice(:index, :namespace) : {} 1271: if @object_name.to_s.match(/\[\]$/) 1272: if object ||= @template.instance_variable_get("@#{Regexp.last_match.pre_match}") and object.respond_to?(:to_param) 1273: @auto_index = object.to_param 1274: else 1275: raise ArgumentError, "object[] naming but object param and @object var don't exist or don't respond to to_param: #{object.inspect}" 1276: end 1277: end 1278: @multipart = nil 1279: end
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.button %> <% 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: button: create: "Create a %{model}" update: "Confirm changes to %{model}"
It also searches for a key specific for the given object:
en: helpers: button: post: create: "Add %{model}"
# File actionpack/lib/action_view/helpers/form_options_helper.rb, line 645 645: def collection_select(method, collection, value_method, text_method, options = {}, html_options = {}) 646: @template.collection_select(@object_name, method, collection, value_method, text_method, objectify_options(options), @default_options.merge(html_options)) 647: end
# File actionpack/lib/action_view/helpers/form_helper.rb, line 1294 1294: def fields_for(record_name, record_object = nil, fields_options = {}, &block) 1295: fields_options, record_object = record_object, nil if record_object.is_a?(Hash) && record_object.extractable_options? 1296: fields_options[:builder] ||= options[:builder] 1297: fields_options[:parent_builder] = self 1298: fields_options[:namespace] = fields_options[:parent_builder].options[:namespace] 1299: 1300: case record_name 1301: when String, Symbol 1302: if nested_attributes_association?(record_name) 1303: return fields_for_with_nested_attributes(record_name, record_object, fields_options, block) 1304: end 1305: else 1306: record_object = record_name.is_a?(Array) ? record_name.last : record_name 1307: record_name = ActiveModel::Naming.param_key(record_object) 1308: end 1309: 1310: index = if options.has_key?(:index) 1311: "[#{options[:index]}]" 1312: elsif defined?(@auto_index) 1313: self.object_name = @object_name.to_s.sub(/\[\]$/,"") 1314: "[#{@auto_index}]" 1315: end 1316: record_name = "#{object_name}#{index}[#{record_name}]" 1317: 1318: @template.fields_for(record_name, record_object, fields_options, &block) 1319: end
# File actionpack/lib/action_view/helpers/form_options_helper.rb, line 649 649: def grouped_collection_select(method, collection, group_method, group_label_method, option_key_method, option_value_method, options = {}, html_options = {}) 650: @template.grouped_collection_select(@object_name, method, collection, group_method, group_label_method, option_key_method, option_value_method, objectify_options(options), @default_options.merge(html_options)) 651: end
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}"
# File actionpack/lib/action_view/helpers/form_options_helper.rb, line 653 653: def time_zone_select(method, priority_zones = nil, options = {}, html_options = {}) 654: @template.time_zone_select(@object_name, method, priority_zones, objectify_options(options), @default_options.merge(html_options)) 655: end