aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--actionpack/CHANGELOG10
-rw-r--r--actionpack/lib/action_view/helpers/javascript_helper.rb7
-rw-r--r--actionpack/lib/action_view/helpers/prototype_helper.rb7
-rw-r--r--actionpack/test/template/prototype_helper_test.rb6
4 files changed, 26 insertions, 4 deletions
diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG
index a9bd209f15..41f71cc68c 100644
--- a/actionpack/CHANGELOG
+++ b/actionpack/CHANGELOG
@@ -1,5 +1,15 @@
*SVN*
+* Added an html_options hash parameter to javascript_tag() and update_page_tag() helpers #6311 [tzaharia]. Example:
+
+ update_page_tag :defer => 'true' { |page| ... }
+
+ Gives:
+
+ <script defer="true" type="text/javascript">...</script>
+
+ Which is needed for dealing with the IE6 DOM when it's not yet fully loaded.
+
* Fixed that rescue template path shouldn't be hardcoded, then it's easier to hook in your own #6295 [mnaberez]
* Fixed escaping of backslashes in JavaScriptHelper#escape_javascript #6302 [sven@c3d2.de]
diff --git a/actionpack/lib/action_view/helpers/javascript_helper.rb b/actionpack/lib/action_view/helpers/javascript_helper.rb
index 039a2f1810..7bce6b91eb 100644
--- a/actionpack/lib/action_view/helpers/javascript_helper.rb
+++ b/actionpack/lib/action_view/helpers/javascript_helper.rb
@@ -162,8 +162,11 @@ module ActionView
# alert('All is good')
# //]]>
# </script>
- def javascript_tag(content)
- content_tag("script", javascript_cdata_section(content), :type => "text/javascript")
+ #
+ # +html_options+ may be a hash of attributes for the <script> tag. Example:
+ # javascript_tag "alert('All is good')", :defer => 'true' # => <script defer="true" type="text/javascript">alert('All is good')</script>
+ def javascript_tag(content, html_options = {})
+ content_tag("script", javascript_cdata_section(content), html_options.merge(:type => "text/javascript"))
end
def javascript_cdata_section(content) #:nodoc:
diff --git a/actionpack/lib/action_view/helpers/prototype_helper.rb b/actionpack/lib/action_view/helpers/prototype_helper.rb
index 60dc2e8bb4..f1b956cf12 100644
--- a/actionpack/lib/action_view/helpers/prototype_helper.rb
+++ b/actionpack/lib/action_view/helpers/prototype_helper.rb
@@ -684,8 +684,11 @@ module ActionView
# Works like update_page but wraps the generated JavaScript in a <script>
# tag. Use this to include generated JavaScript in an ERb template.
# See JavaScriptGenerator for more information.
- def update_page_tag(&block)
- javascript_tag update_page(&block)
+ #
+ # +html_options+ may be a hash of <script> attributes to be passed
+ # to ActionView::Helpers::JavaScriptHelper#javascript_tag.
+ def update_page_tag(html_options = {}, &block)
+ javascript_tag update_page(&block), html_options
end
protected
diff --git a/actionpack/test/template/prototype_helper_test.rb b/actionpack/test/template/prototype_helper_test.rb
index 413999d85c..a88d0f7c9f 100644
--- a/actionpack/test/template/prototype_helper_test.rb
+++ b/actionpack/test/template/prototype_helper_test.rb
@@ -171,6 +171,12 @@ class PrototypeHelperTest < Test::Unit::TestCase
block = Proc.new { |page| page.replace_html('foo', 'bar') }
assert_equal javascript_tag(create_generator(&block).to_s), update_page_tag(&block)
end
+
+ def test_update_page_tag_with_html_options
+ block = Proc.new { |page| page.replace_html('foo', 'bar') }
+ assert_equal javascript_tag(create_generator(&block).to_s, {:defer => 'true'}), update_page_tag({:defer => 'true'}, &block)
+ end
+
end
class JavaScriptGeneratorTest < Test::Unit::TestCase