2010-07-08 63 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),但是任何一个都是好的。