0

ユーザーがドロップダウンメニューからテクノロジーを選択できるアプリがあります。最も一般的なオプションでコーディングし、データベース内のテクノロジーを示したいと思います。

1つのドロップダウンメニューに、技術列のオプションだけでなく、事前に定義されたオプションを含めることは可能ですか?このようなもの?

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

ありがとう

4

2 に答える 2

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") %>
于 2012-10-01T10:50:23.593 に答える
1

すべてのProjectアイテムを選択し、tech列を取得するためだけにそれらを構築することは、非常にやり過ぎです。

db_techs = Project.select("projects.tech").uniq.map {|p| [p.tech]}

(これSELECT DISTINCT projects.techにより、代わりにクエリが生成されますSELECT * FROM projects

また、basic_techsがリストに2回表示されないようにする必要があるため、

all_techs = basic_techs + db_techs
all_techs.uniq!
于 2012-10-01T11:57:08.907 に答える