我有一个应用程序,用户可以从下拉菜单中选择一项技术。我想在最常用的选项中编写代码,并展示数据库中的技术。
是否可以在一个下拉菜单中提供预定的选项以及技术栏中的选项?像这样的东西?
<%= f.select( :tech, [['Tech1'],['Tech2'],['Tech3'], ['Tech4'], Project.all.map {|p| [p.tech]}.uniq], :prompt => "Select a previous Technology") %>谢谢
发布于 2012-10-01 18:50:24
您可以简单地添加数组来连接它们:
basic_techs = [['Tech1'],['Tech2'],['Tech3'], ['Tech4']]
db_techs = Project.all.map {|p| [p.tech]}.uniq
<%= f.select( :tech, basic_techs + db_techs, :prompt => "Select a previous Technology") %>发布于 2012-10-01 19:57:09
选择所有的Project项,仅仅为了获取tech列而构建它们是非常夸张的。
db_techs = Project.select("projects.tech").uniq.map {|p| [p.tech]}(这将生成一个SELECT DISTINCT projects.tech查询,而不是SELECT * FROM projects)
此外,您不希望basic_techs在列表中出现两次,因此
all_techs = basic_techs + db_techs
all_techs.uniq!https://stackoverflow.com/questions/12671815
复制相似问题