2012-10-01 104 views
0

我有一個應用程序,用戶可以從下拉菜單中選擇一項技術。我想用最常見的選項進行編碼,並在數據庫中顯示技術。Ruby on Rails:下拉菜單選項

是否可以在一個下拉菜單中有預定的選項以及技術欄中的選項?像這樣?

<%= f.select(:tech, [['Tech1'],['Tech2'],['Tech3'], ['Tech4'], Project.all.map {|p| [p.tech]}.uniq], :prompt => "Select a previous Technology") %> 

感謝

回答

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") %> 
+0

完美,謝謝您 – Jazz

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!