Permalink
Browse files

Switched to use `display:none` in extra_tags_for_form method.

The use of `display:inline` with the content_tag call in the
extra_tags_for_form method potentially causes display issues with some
browsers, namely Internet Explorer. IE's behaviour of not collapsing
the line height on divs with ostensibly no content means that the
automatically added div containing the hidden authenticity_token, utf8
and _method form input tags may interfere with other visible form
elements in certain circumstances. The use of `display:none` rather
than `display:inline` fixes this problem.

Fixes #6403
  • Loading branch information...
1 parent 6b54883 commit 7a085dac2a2820856cbe6c2ca8c69779ac766a97 @gaelian gaelian committed with pixeltrix Jun 3, 2012
@@ -1,3 +1,9 @@
+* Use `display:none` instead of `display:inline` for hidden fields
+
+ Fixes #6403
+
+ *Gaelian Ditchburn*
+
* The `video_tag` helper accepts a number as `:size`
The `:size` option of the `video_tag` helper now can be specified
@@ -51,7 +51,7 @@ module Helpers
# The HTML generated for this would be (modulus formatting):
#
# <form action="/people" class="new_person" id="new_person" method="post">
- # <div style="margin:0;padding:0;display:inline">
+ # <div style="display:none">
# <input name="authenticity_token" type="hidden" value="NrOp5bsjoLRuK8IW5+dQEYjKGUJDe7TQoZVvq95Wteg=" />
# </div>
# <label for="person_first_name">First name</label>:
@@ -81,7 +81,7 @@ module Helpers
# the code above as is would yield instead:
#
# <form action="/people/256" class="edit_person" id="edit_person_256" method="post">
- # <div style="margin:0;padding:0;display:inline">
+ # <div style="display:none">
# <input name="_method" type="hidden" value="patch" />
# <input name="authenticity_token" type="hidden" value="NrOp5bsjoLRuK8IW5+dQEYjKGUJDe7TQoZVvq95Wteg=" />
# </div>
@@ -315,7 +315,7 @@ module FormHelper
# The HTML generated for this would be:
#
# <form action='http://www.example.com' method='post' data-remote='true'>
- # <div style='margin:0;padding:0;display:inline'>
+ # <div style='display:none'>
# <input name='_method' type='hidden' value='patch' />
# </div>
# ...
@@ -333,7 +333,7 @@ module FormHelper
# The HTML generated for this would be:
#
# <form action='http://www.example.com' method='post' data-behavior='autosave' name='go'>
- # <div style='margin:0;padding:0;display:inline'>
+ # <div style='display:none'>
# <input name='_method' type='hidden' value='patch' />
# </div>
# ...
@@ -722,7 +722,7 @@ def extra_tags_for_form(html_options)
enforce_utf8 = html_options.delete("enforce_utf8") { true }
tags = (enforce_utf8 ? utf8_enforcer_tag : ''.html_safe) << method_tag
- content_tag(:div, tags, :style => 'margin:0;padding:0;display:inline')
+ content_tag(:div, tags, :style => 'display:none')
end
def form_tag_html(html_options)
@@ -59,7 +59,7 @@ def test_nested_fields_for_with_child_index_option_override_on_a_nested_attribut
protected
def hidden_fields(method = nil)
- txt = %{<div style="margin:0;padding:0;display:inline">}
+ txt = %{<div style="display:none">}
txt << %{<input name="utf8" type="hidden" value="&#x2713;" />}
if method && !%w(get post).include?(method.to_s)
txt << %{<input name="_method" type="hidden" value="#{method}" />}
@@ -3023,7 +3023,7 @@ def test_form_for_only_instantiates_builder_once
protected
def hidden_fields(method = nil)
- txt = %{<div style="margin:0;padding:0;display:inline">}
+ txt = %{<div style="display:none">}
txt << %{<input name="utf8" type="hidden" value="&#x2713;" />}
if method && !%w(get post).include?(method.to_s)
txt << %{<input name="_method" type="hidden" value="#{method}" />}
@@ -14,7 +14,7 @@ def hidden_fields(options = {})
method = options[:method]
enforce_utf8 = options.fetch(:enforce_utf8, true)
- txt = %{<div style="margin:0;padding:0;display:inline">}
+ txt = %{<div style="display:none">}
txt << %{<input name="utf8" type="hidden" value="&#x2713;" />} if enforce_utf8
if method && !%w(get post).include?(method.to_s)
txt << %{<input name="_method" type="hidden" value="#{method}" />}

3 comments on commit 7a085da

@jcoglan
Contributor
jcoglan commented on 7a085da Sep 9, 2014

This change prevents Capybara's has_css matcher from finding any hidden form inputs. Why is this container div necessary when all it does is contain hidden inputs?

@jcoglan
Contributor
jcoglan commented on 7a085da Sep 9, 2014

Sorry, disregard my previous comment, I didn't know about has_css(selector, visible: false).

@chancancode
Member

#6608

Protip: paste the commit sha in the search box on the top to find the associated pull request

Please sign in to comment.