aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_view/helpers/form_helper.rb
diff options
context:
space:
mode:
authorWill Read <will@pivotallabs.com>2009-10-07 18:47:26 -0700
committerEloy Duran <eloy.de.enige@gmail.com>2009-11-15 21:47:57 +0100
commit7fadb3f261fc7cc753d303d0fbe2cbf019385f99 (patch)
treec5d2899e6af7d7910dda4c0b18f6b91bced6c21f /actionpack/lib/action_view/helpers/form_helper.rb
parent7601d482bd187bdd06d3aa7ac1e8c7bb805f40a3 (diff)
downloadrails-7fadb3f261fc7cc753d303d0fbe2cbf019385f99.tar.gz
rails-7fadb3f261fc7cc753d303d0fbe2cbf019385f99.tar.bz2
rails-7fadb3f261fc7cc753d303d0fbe2cbf019385f99.zip
Allow explicit placement of hidden id element for nested models.
[#3259 state:resolved] Signed-off-by: Eloy Duran <eloy.de.enige@gmail.com>
Diffstat (limited to 'actionpack/lib/action_view/helpers/form_helper.rb')
-rw-r--r--actionpack/lib/action_view/helpers/form_helper.rb13
1 files changed, 11 insertions, 2 deletions
diff --git a/actionpack/lib/action_view/helpers/form_helper.rb b/actionpack/lib/action_view/helpers/form_helper.rb
index c46b39fc23..d0c66eda60 100644
--- a/actionpack/lib/action_view/helpers/form_helper.rb
+++ b/actionpack/lib/action_view/helpers/form_helper.rb
@@ -963,7 +963,7 @@ module ActionView
end
end
- (field_helpers - %w(label check_box radio_button fields_for)).each do |selector|
+ (field_helpers - %w(label check_box radio_button fields_for hidden_field)).each do |selector|
src = <<-end_src
def #{selector}(method, options = {}) # def text_field(method, options = {})
@template.send( # @template.send(
@@ -1022,6 +1022,11 @@ module ActionView
def radio_button(method, tag_value, options = {})
@template.radio_button(@object_name, method, tag_value, objectify_options(options))
end
+
+ def hidden_field(method, options = {})
+ @emitted_hidden_id = true if method == :id
+ @template.hidden_field(@object_name, method, objectify_options(options))
+ end
def error_message_on(method, *args)
@template.error_message_on(@object, method, *args)
@@ -1035,6 +1040,10 @@ module ActionView
@template.submit_tag(value, options.reverse_merge(:id => "#{object_name}_submit"))
end
+ def emitted_hidden_id?
+ @emitted_hidden_id
+ end
+
private
def objectify_options(options)
@default_options.merge(options.merge(:object => @object))
@@ -1069,8 +1078,8 @@ module ActionView
@template.fields_for(name, object, *args, &block)
else
@template.fields_for(name, object, *args) do |builder|
- @template.concat builder.hidden_field(:id)
block.call(builder)
+ @template.concat builder.hidden_field(:id) unless builder.emitted_hidden_id?
end
end
end