2010-07-08 67 views
0

我有一個選擇下拉,我生成數據庫條目的選項的代碼,然後添加一個選項,就像開頭:放在哪裏產生選擇選項

@select = Service.find_services_by_id(id).collect { |p| [p.name, p.id] } 
@select.unshift([ "Choose a service", 0]) 

然後在HAML觀點我有:

=select_tag "service_id", options_for_select(@select) 

但我期待在重構,要麼通過:

1)添加另一種方法的模型,該模型也做了不印字操作返回到我要選擇所有的數據在一塊

2)移動整個@select定義視圖助手和從視圖

3)只要具有在控制器首先@select線,然後有一個視圖助手做「不印字」部分調用它

但我很難弄清楚最有意義的是什麼。思考?

回答

0

我會去3,但不僅做到了unshift的幫手,但也有創造整個select的thingie太:

module SomeHelper 
    def service_select(objects) 
    select_tag "service_id", options_for_select(objects.unshift(["Select a service", 0])) 
    end 
end 

然後在視圖中,您只需要調用=service_select(@select)

+2

聽起來很像第二個。 – 2010-07-08 03:28:07

0

1)沒有多大意義。該模型不應該將數據標題粘貼到相應的位置 - 這是視圖的工作。

2)和3)都是合理的 - 我個人傾向於3),但是任何一個都是好的。