aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2012-01-22 23:11:08 -0800
committerJosé Valim <jose.valim@gmail.com>2012-01-22 23:11:08 -0800
commit2b74a13a4b4d6b8d21e58e49a33872baa95d3b4a (patch)
tree86c7cc4d3260e65147507dd9150d1690e33610b9
parent14e8ca6af58a3fa31137d3f4acc920daf2c6c0be (diff)
parent88ec722a0ff0752e4170d41d0c956a387cd9b4db (diff)
downloadrails-2b74a13a4b4d6b8d21e58e49a33872baa95d3b4a.tar.gz
rails-2b74a13a4b4d6b8d21e58e49a33872baa95d3b4a.tar.bz2
rails-2b74a13a4b4d6b8d21e58e49a33872baa95d3b4a.zip
Merge pull request #4608 from indrekj/translated_date_order
Raise exception when date.order includes invalid elements
-rw-r--r--actionpack/lib/action_view/helpers/date_helper.rb10
-rw-r--r--actionpack/test/template/date_helper_i18n_test.rb8
2 files changed, 17 insertions, 1 deletions
diff --git a/actionpack/lib/action_view/helpers/date_helper.rb b/actionpack/lib/action_view/helpers/date_helper.rb
index f5077b034a..e095f832d1 100644
--- a/actionpack/lib/action_view/helpers/date_helper.rb
+++ b/actionpack/lib/action_view/helpers/date_helper.rb
@@ -836,7 +836,15 @@ module ActionView
end
def translated_date_order
- I18n.translate(:'date.order', :locale => @options[:locale]) || []
+ date_order = I18n.translate(:'date.order', :locale => @options[:locale]) || []
+
+ forbidden_elements = date_order - [:year, :month, :day]
+ if forbidden_elements.any?
+ raise StandardError,
+ "#{@options[:locale]}.date.order only accepts :year, :month and :day"
+ end
+
+ date_order
end
# Build full select tag from date type and options.
diff --git a/actionpack/test/template/date_helper_i18n_test.rb b/actionpack/test/template/date_helper_i18n_test.rb
index e3d3d5ff77..ef3d7d97ee 100644
--- a/actionpack/test/template/date_helper_i18n_test.rb
+++ b/actionpack/test/template/date_helper_i18n_test.rb
@@ -118,4 +118,12 @@ class DateHelperSelectTagsI18nTests < ActiveSupport::TestCase
I18n.expects(:translate).with(:'date.order', :locale => 'en').returns [:year, :month, :day]
datetime_select('post', 'updated_at', :locale => 'en')
end
+
+ def test_date_or_time_select_given_invalid_order
+ I18n.expects(:translate).with(:'date.order', :locale => 'en').returns [:invalid, :month, :day]
+
+ assert_raise StandardError do
+ datetime_select('post', 'updated_at', :locale => 'en')
+ end
+ end
end