diff options
author | Josep Jaume Rey <josepjaume@gmail.com> | 2014-05-12 17:20:51 +0200 |
---|---|---|
committer | Josep Jaume Rey <josepjaume@gmail.com> | 2014-05-13 14:13:36 +0200 |
commit | 6caf3ab51b422e08135cbfbdaeedb94b1f6c312c (patch) | |
tree | 9462b0d623f0a52cca3316c0bd6c00f126b8e925 /actionview | |
parent | 711af752342cdd558f5f82d407d0d56a115bb8bc (diff) | |
download | rails-6caf3ab51b422e08135cbfbdaeedb94b1f6c312c.tar.gz rails-6caf3ab51b422e08135cbfbdaeedb94b1f6c312c.tar.bz2 rails-6caf3ab51b422e08135cbfbdaeedb94b1f6c312c.zip |
Dup options hash to prevent modifications
`options[:default]` and `options[:raise]` can be mistakenly added to the `options` hash. This can be a problem if you're reusing the same object.
Diffstat (limited to 'actionview')
-rw-r--r-- | actionview/lib/action_view/helpers/translation_helper.rb | 2 | ||||
-rw-r--r-- | actionview/test/template/translation_helper_test.rb | 6 |
2 files changed, 8 insertions, 0 deletions
diff --git a/actionview/lib/action_view/helpers/translation_helper.rb b/actionview/lib/action_view/helpers/translation_helper.rb index 0bc40874d9..eac9279855 100644 --- a/actionview/lib/action_view/helpers/translation_helper.rb +++ b/actionview/lib/action_view/helpers/translation_helper.rb @@ -34,6 +34,8 @@ module ActionView # naming convention helps to identify translations that include HTML tags so that # you know what kind of output to expect when you call translate in a template. def translate(key, options = {}) + options = options.dup + options[:default] = wrap_translate_defaults(options[:default]) if options[:default] # If the user has specified rescue_format then pass it all through, otherwise use diff --git a/actionview/test/template/translation_helper_test.rb b/actionview/test/template/translation_helper_test.rb index c4770840fb..f166668a60 100644 --- a/actionview/test/template/translation_helper_test.rb +++ b/actionview/test/template/translation_helper_test.rb @@ -151,4 +151,10 @@ class TranslationHelperTest < ActiveSupport::TestCase translation = translate(:'translations.missing', default: ['A Generic String', 'Second generic string']) assert_equal 'A Generic String', translation end + + def test_translate_doesnt_change_options + options = {} + translate(:'translations.missing', options) + assert_equal options, {} + end end |