我有一个应用程序,用户可以从下拉菜单中选择技术。我想在最常见的选项中编码,以及在数据库中显示技术。
是否可以在一个下拉菜单中预设选项以及技术栏中的选项?像这样的东西?
<%= f.select( :tech, [['Tech1'],['Tech2'],['Tech3'], ['Tech4'], Project.all.map {|p| [p.tech]}.uniq], :prompt => "Select a previous Technology") %>
由于
答案 0 :(得分:1)
您可以简单地添加数组来连接它们:
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") %>
答案 1 :(得分:1)
选择所有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!