2015-04-01 46 views
0

我有此選擇導軌中選擇)3.0.10條件(

<%= select("post", "field",@variable.all.collect) {|p| [ p.name, p.id ] }, :include_blank =>'blank')%>    

,以產生4個寄存器

下拉和我沒有

{|p| [ p.name, p.id ] if helper_method(p.id) } 

期待這樣的輸出:

blank 
reg4 

而是我得到了這個輸出:

blank 



reg4 

,我無法弄清楚如何獲得預期的輸出

回答

0

@variable.all.collect {|p| [ p.name, p.id ] if helper_method(p.id) }將返回類似[["blank", 1],nil,nil,nil,["reg4", 2]],因爲每次helper_method(p.id)條件不滿足時返回零的收集。這是給你空白選項的零值,所以一個簡單的解決辦法是通過使用.compact

@variable.all.collect {|p| [ p.name, p.id ] if helper_method(p.id) }.compact 

刪除尼爾斯還有其他的方法,你能避免在第一時間回零,只是刪除在另一個路過的選項是這樣的:

@variable.all.collect {|p| [ p.name, p.id ] }.reject{|p| !helper_method(p1)}