diff --git a/actionview/CHANGELOG.md b/actionview/CHANGELOG.md index adbe8ac389ca5..98b78a7114ad1 100644 --- a/actionview/CHANGELOG.md +++ b/actionview/CHANGELOG.md @@ -1,3 +1,17 @@ +* Added an `extname` hash option for `javascript_include_tag` method. + + Before: + + javascript_include_tag('templates.jst') + # => + + After: + + javascript_include_tag('templates.jst', extname: false ) + # => + + *Nathan Stitt* + * Fix `current_page?` when the URL contains escaped characters and the original URL is using the hexadecimal lowercased. diff --git a/actionview/lib/action_view/helpers/asset_tag_helper.rb b/actionview/lib/action_view/helpers/asset_tag_helper.rb index 2b3a3c6a29341..a13d0021eaf26 100644 --- a/actionview/lib/action_view/helpers/asset_tag_helper.rb +++ b/actionview/lib/action_view/helpers/asset_tag_helper.rb @@ -26,7 +26,8 @@ module AssetTagHelper # to assets/javascripts, full paths are assumed to be relative to the document # root. Relative paths are idiomatic, use absolute paths only when needed. # - # When passing paths, the ".js" extension is optional. + # When passing paths, the ".js" extension is optional. If you do not want ".js" + # appended to the path extname: false can be set on the options. # # You can modify the HTML attributes of the script tag by passing a hash as the # last argument. @@ -37,6 +38,9 @@ module AssetTagHelper # javascript_include_tag "xmlhr" # # => # + # javascript_include_tag "template.jst", extname: false + # # => + # # javascript_include_tag "xmlhr.js" # # => # @@ -51,8 +55,7 @@ module AssetTagHelper # # => def javascript_include_tag(*sources) options = sources.extract_options!.stringify_keys - path_options = options.extract!('protocol').symbolize_keys - + path_options = options.extract!('protocol', 'extname').symbolize_keys sources.uniq.map { |source| tag_options = { "src" => path_to_javascript(source, path_options) diff --git a/actionview/test/template/javascript_helper_test.rb b/actionview/test/template/javascript_helper_test.rb index de6a6eaab3f49..4703111741b39 100644 --- a/actionview/test/template/javascript_helper_test.rb +++ b/actionview/test/template/javascript_helper_test.rb @@ -51,6 +51,13 @@ def test_javascript_tag assert_equal 'foo', output_buffer, 'javascript_tag without a block should not concat to output_buffer' end + # Setting the :extname option will control what extension (if any) is appended to the url for assets + def test_javascript_include_tag + assert_dom_equal "", javascript_include_tag('/foo') + assert_dom_equal "", javascript_include_tag('/foo', extname: false ) + assert_dom_equal "", javascript_include_tag('/foo', extname: '.bar' ) + end + def test_javascript_tag_with_options assert_dom_equal "", javascript_tag("alert('hello')", :id => "the_js_tag")