2013-02-08 67 views
0

這是一個簡單的問題,但我很難找到答案。我在我的表單中有一個選擇字段,我想根據我的查詢記錄計數來構建選項數組。在Rails中選擇字段選項數組。導軌的方式

我得到我的計數,像這樣在我的控制器:

@num_pages= Page.where(:site_id => @siteid).count 

我想我的選擇陣列只是像{[ 「1」,1],[ 「2」,2]。 ..}一直到@num_pages。

現在我知道我可以做一個循環,並建立一個數組,但我想知道是否有一個更「軌」辦法做到這一點。所以我的選擇代碼仍然可以這樣簡單:

<%= select_tag(:nav_order, options_for_select(@num_pages)) %> 

...沒有使用循環和數組推動,你有什麼。

UPDATE

感謝我的代碼現在是這樣的答覆。然而,我決定保留視圖中的映射而不是控制器。

<% options_array = ([email protected]_count).to_a.collect{|p| ["#{p}", p]} %> 
<%= select_tag(:nav_order, options_for_select(options_array)) %> 

回答

1

在控制器中構建數組?

num = Page.where(:site_id => @siteid).count 
@num_pages = (1..num).to_a.collect{|p| ["#{p}", p]} 
2

如果我理解正確你的問題,我想這應該做的伎倆:

Array.new(@num_pages){ |i| [(i+1).to_s, i+1] } 

例有數量和輸出:

irb(main):001:0> Array.new(5){ |i| [(i+1).to_s, i+1] } 
=> [["1", 1], ["2", 2], ["3", 3], ["4", 4], ["5", 5]] 

不知道這將是「軌道」的方式,但我認爲它很簡單:)