aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael Mendonça França <rafaelmfranca@gmail.com>2013-12-06 17:05:59 -0200
committerRafael Mendonça França <rafaelmfranca@gmail.com>2013-12-06 17:05:59 -0200
commita220b1518dc6785e4d66437ec7362f7b8f5506e7 (patch)
tree15a44a47fddf91e47eeee1b9fd25466cdceac220
parent12544f9422958117c5c7ed715d938eb5257d2505 (diff)
parent1eaa521273399d789565af1933a0e6e4462511a4 (diff)
downloadrails-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.md18
-rw-r--r--actionview/lib/action_view/helpers/text_helper.rb2
-rw-r--r--actionview/test/template/text_helper_test.rb7
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