2014-07-06 67 views
1

我使用「select」助手遍歷嵌套數組以顯示窗體上的選項屬性。Noob on Rails - 需要幫助的改進方法

這裏是目前我有:

def smtp_delays 
    [['5 seconds', 5], ['10 seconds', 10], ['15 seconds', 15], ['30 seconds', 30], ['60 seconds', 60]] 
    end 

在這裏,我的形式是怎麼回事,通過它:

<%= ff.select(:smtp_delay, @test.settings.smtp_delays, {class: 'form-control'}) %> 

的這個我的網頁上輸出原來是這樣的:

<option value="5">5 seconds</option> 
<option value="10">10 seconds</option> 
<option value="15">15 seconds</option> 
<option value="30">30 seconds</option> 
<option value="60">60 seconds</option> 

有沒有更有效的方法來處理這個過程?喜歡,如果我想添加另一個條目,我敢肯定有一個更有效的方法比添加另一個["45 seconds", 45]

任何幫助將不勝感激。謝謝!

回答

2

這可能縮短東西對你一點

[5, 10, 15, 30, 45].map { |s| ["%d seconds" % s, s] } 

輸出

#=> [["5 seconds", 5], ["10 seconds", 10], ["15 seconds", 15], ["30 seconds", 30], ["45 seconds", 45]] 

ActionView情況下,你也有pluralize提供

所以,你可以做些什麼像這樣

<%= ff.select :smtp_delay @test.settings.smtp_delays.map { |s| [pluralize(s, "second"), s] } %> 

雖然我可能不會把這個權利。可能更適合使用Presenter模式來保持視圖清潔這種東西