2012-11-16 30 views
0

我從數據庫select中選擇一個數組(@tasks),我想單獨顯示第一個數據,然後遍歷其他數據。從所有其他使用rails分離數組中第一條記錄的最佳方式是什麼?

數組中總會有一個項目,但可能有或不可以多於一個。

什麼是最好的方式來顯示第一個,然後循環通過任何剩餘的項目,如果還有更多?

我以爲在前些日子我發現了類似的東西,但我似乎無法再找到它。

感謝

回答

1
1.9.3-p327 > a = [1,2,3] 
=> [1, 2, 3] 
1.9.3-p327 > first, *the_rest = *a 
=> [1, 2, 3] 
1.9.3-p327 > first 
=> 1 
1.9.3-p327 > the_rest 
=> [2, 3] 

然而,在上述情況下,如果a = [1]然後the_rest最終會被nil(至少在Ruby 1.9的,不知道約1.8)

你也使用.shift刪除第一個元素是這樣的:

1.9.3-p327 > first = a.shift 
=> 1 
1.9.3-p327 > first 
=> 1 
1.9.3-p327 > a 
=> [2, 3] 
1.9.3-p327 > 
+0

我很欣賞的答覆。你的第一個例子的語法對我來說看起來有點高級,而且不太可讀(至少對我來說)。第二個是有道理的,但不太適合我的視圖代碼。 – user1116573

+0

我一直在尋找更好的事情。你能指出我關於你的第一個方法的文檔的方向,所以我可以閱讀它嗎? – user1116573

+0

Google「ruby splat operator」... https://www.google.com/search?q=ruby+splat+operator –

0

很簡單。您可以使用此:

first = @tasks.first 

其他:

others = @tasks[[email protected]] 

顯示上圖:

<%= @tasks.first %> 
<% @tasks[[email protected]].each do |task| %> 
    ... 
<% end %> 
+0

雖然我爲'@tasks [1 ..- 1]'交換了'@tasks [1 .. @ tasks.length]',但這工作得很好。謝謝。 – user1116573

+0

@ user1116573你可以自由地做你感覺舒服的事,謝謝接受:) – Thanh

相關問題