diff options
author | Kristian Freeman <kristian@kristianfreeman.com> | 2013-11-26 12:09:52 -0800 |
---|---|---|
committer | Kristian Freeman <kristian@kristianfreeman.com> | 2013-12-06 10:57:37 -0800 |
commit | 1eaa521273399d789565af1933a0e6e4462511a4 (patch) | |
tree | 140f7337f0cccf9e6d2f2e0cd737138cfc8c3654 /actionview | |
parent | 93c74e1b4d70dd1fab0c48da92c2dc05cc9338f4 (diff) | |
download | rails-1eaa521273399d789565af1933a0e6e4462511a4.tar.gz rails-1eaa521273399d789565af1933a0e6e4462511a4.tar.bz2 rails-1eaa521273399d789565af1933a0e6e4462511a4.zip |
A Cycle object should accept an array and cycle through it as it would
with a set of comma-separated objects.
Diffstat (limited to 'actionview')
-rw-r--r-- | actionview/CHANGELOG.md | 16 | ||||
-rw-r--r-- | actionview/lib/action_view/helpers/text_helper.rb | 2 | ||||
-rw-r--r-- | actionview/test/template/text_helper_test.rb | 7 |
3 files changed, 24 insertions, 1 deletions
diff --git a/actionview/CHANGELOG.md b/actionview/CHANGELOG.md index 787e6d68be..5de7de0cfc 100644 --- a/actionview/CHANGELOG.md +++ b/actionview/CHANGELOG.md @@ -1,3 +1,19 @@ +* A Cycle object should accept an array and cycle through it as it would with a set of comma-separated objects. + + arr = [1,2,3] + cycle(arr) # => '1' + cycle(arr) # => '2' + cycle(arr) # => '3' + + Previously, it would return the array as a string, because it took the array as a single object: + + arr = [1,2,3] + cycle(arr) # => '[1,2,3]' + cycle(arr) # => '[1,2,3]' + cycle(arr) # => '[1,2,3]' + + *Kristian Freeman* + * Use `set_backtrace` instead of instance variable `@backtrace` in ActionView exceptions *Shimpei Makimoto* diff --git a/actionview/lib/action_view/helpers/text_helper.rb b/actionview/lib/action_view/helpers/text_helper.rb index b0e4aa3cd3..a6ff15af7e 100644 --- a/actionview/lib/action_view/helpers/text_helper.rb +++ b/actionview/lib/action_view/helpers/text_helper.rb @@ -314,7 +314,7 @@ module ActionView options = values.extract_options! name = options.fetch(:name, 'default') - values.unshift(first_value) + values.unshift(*first_value) cycle = get_cycle(name) unless cycle && cycle.values == values diff --git a/actionview/test/template/text_helper_test.rb b/actionview/test/template/text_helper_test.rb index dd1a92acfb..c280a22843 100644 --- a/actionview/test/template/text_helper_test.rb +++ b/actionview/test/template/text_helper_test.rb @@ -381,6 +381,13 @@ class TextHelperTest < ActionView::TestCase assert_equal("3", cycle("one", 2, "3")) end + def test_cycle_with_array + array = [1, 2, 3] + assert_equal("1", cycle(array)) + assert_equal("2", cycle(array)) + assert_equal("3", cycle(array)) + end + def test_cycle_with_no_arguments assert_raise(ArgumentError) { cycle } end |