2

私はRORを初めて使用しますが、ドロップダウンメニューの要素を一意にするのに問題があります。メニューを使用すると、ユーザーはデータベースから会社を選択できます。現在、データベースには同じ会社が何度も保持されているため、メニューにはデータベース内のすべての会社がリストされています。その1つの会社だけを1回だけ表示したいと思います。

<%= f.label :company_name %><br />
<%= f.select( :company_name, Company.all.map {|c| [c.company_name]} ) %>

これは簡単に修正できるはずですが、答えが見つからないようです。うまくいけば、誰かが助けることができます。

前もって感謝します。

4

2 に答える 2

4

uniqを呼び出すのではなく!フェッチされた配列では、スコープを使用してそれを実行したいと思います...モデルでは:

named_scope :unique_by_name, :select => 'DISTINCT name', :order => 'name ASC'

次に、次を使用できます。

Company.unique_by_name.map { |company| company.name }

そうすることで、費用のかかるすべての会社を取得して後でuniqでフィルタリングするのではなく、データベースバックエンドから直接ユニークな会社を選択できるという利点があります。方法。

于 2012-07-19T01:20:13.613 に答える
0

あなたが使用することができます:

Company.all.map {|c| c.company_name}.uniq!

ただし、会社のIDとその使用方法には注意してください。

それが役に立てば幸い!

于 2012-07-18T08:49:18.643 に答える