diff options
author | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2013-12-06 17:05:59 -0200 |
---|---|---|
committer | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2013-12-06 17:05:59 -0200 |
commit | a220b1518dc6785e4d66437ec7362f7b8f5506e7 (patch) | |
tree | 15a44a47fddf91e47eeee1b9fd25466cdceac220 | |
parent | 12544f9422958117c5c7ed715d938eb5257d2505 (diff) | |
parent | 1eaa521273399d789565af1933a0e6e4462511a4 (diff) | |
download | rails-a220b1518dc6785e4d66437ec7362f7b8f5506e7.tar.gz rails-a220b1518dc6785e4d66437ec7362f7b8f5506e7.tar.bz2 rails-a220b1518dc6785e4d66437ec7362f7b8f5506e7.zip |
Merge pull request #13059 from imkmf/cycle-accepts-array
Cycle object should accept an array
Conflicts:
actionview/CHANGELOG.md
-rw-r--r-- | actionview/CHANGELOG.md | 18 | ||||
-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, 26 insertions, 1 deletions
diff --git a/actionview/CHANGELOG.md b/actionview/CHANGELOG.md index b95ef0e478..0f38195514 100644 --- a/actionview/CHANGELOG.md +++ b/actionview/CHANGELOG.md @@ -1,3 +1,21 @@ +* 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* + * Label tags generated by collection helpers only inherit the `:index` and `:namespace` from the input, because only these attributes modifies the `for` attribute of the label. Also, the input attributes don't have diff --git a/actionview/lib/action_view/helpers/text_helper.rb b/actionview/lib/action_view/helpers/text_helper.rb index 3478eadbf2..9943e19714 100644 --- a/actionview/lib/action_view/helpers/text_helper.rb +++ b/actionview/lib/action_view/helpers/text_helper.rb @@ -316,7 +316,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 5b3bccf951..a514bba83d 100644 --- a/actionview/test/template/text_helper_test.rb +++ b/actionview/test/template/text_helper_test.rb @@ -386,6 +386,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 |