1
我有一個數組:如何分組ActiveRecord對象的數組?
<% @widgets.each do |w| %>
...
<% end %>
我怎樣才能在羣體中顯示它們?比方說4:
<div>1, 2, 3, 4</div>
<div>5, 6, 7, 8</div>
etc.
謝謝。
我有一個數組:如何分組ActiveRecord對象的數組?
<% @widgets.each do |w| %>
...
<% end %>
我怎樣才能在羣體中顯示它們?比方說4:
<div>1, 2, 3, 4</div>
<div>5, 6, 7, 8</div>
etc.
謝謝。
嘗試使用each_slice(n)
:
require 'erb'
@widgets = (1..8).to_a
template = <<EOF
<% @widgets.each_slice(4) do |w| %>
<div><%= w.join(', ') %></div>
<% end %>
EOF
puts ERB.new(template).result(binding)
# =>
<div>1, 2, 3, 4</div>
<div>5, 6, 7, 8</div>
你給具體的例子,你想each_slice
:
<% @widgets.each_slice(4) do |ws| %>
<div><%= ws.join(', ') %></div>
<% end %>
您可能也有興趣each_cons
(每個連續的,如「1,2 ,3「,」2,3,4「,」3,4,5「等)或group_by
進行任意分組。
Person = Struct.new(:name,:age,:male) do
def inspect
"<#{'fe' unless male}male '#{name}' #{age}>"
end
end
all = [
Person.new("Diane", 12, false),
Person.new("Harold", 28, true),
Person.new("Gavin", 38, true),
Person.new("Judy", 55, false),
Person.new("Dirk", 59, true)
]
p all.group_by(&:male)
#=> {
#=> false=>[ <female 'Diane' 12>, <female 'Judy' 55> ],
#=> true =>[ <male 'Gavin' 38>, <male 'Harold' 28>, <male 'Dirk' 59> ]
#=> }
p all.group_by{ |person| (person.age/10) * 10 }
#=> {10=>[<female 'Diane' 12>],
#=> 20=>[<male 'Harold' 28>],
#=> 30=>[<male 'Gavin' 38>],
#=> 50=>[<female 'Judy' 55>, <male 'Dirk' 59>]}
謝謝。你們兩人在3分鐘前回復。我不知道哪個回答標記爲有效:(我會等着看誰是第一個 –
所有的東西都是平等的,我總是把它交給聲譽較低的人:)(另外,他的第一個回答擊敗了我52秒;將鼠標懸停在「xx分鐘前」以查看實際時間作爲提示。) – Phrogz
好的,這很公平,謝謝! –