2011-10-19 3 views
0

これにif文を追加するにはどうすればよいですか?if文をドロップダウンする

<% = f.select(:manager_user_id、User.all.collect {|ユーザー| [user.full_name、user.id]}ソート{|、B | [0] < = > [0]}、B:プロンプト=> "プロジェクトマネージャを選択して")%>

が、それはユーザーが役割ProjectManager

if user.has_role? :ProjectManager 
+0

をソートしたい場合は、ユーザーがProjectManagerある場合は、選択のみ表示します?またはプロジェクトマネージャであるすべてのユーザをリストしたいとしますか? – Gerry

+0

すべてのプロジェクトマネージャに選択を表示させたい – ahmet

+1

ifステートメントを追加しないで、プロジェクトマネージャであるユーザーのみを選択します。 –

答えて

0

01を試してみてください持っていることを確認するために、これを必要とします
+0

もちろん、DBからすべてのユーザーをフェッチするので、これは完全に間違っています。あなたは間違いなくこのように行かないといけません。私は@alassiterの修正された答えを追加して正しいものにしています。 – Gerry

+0

この回答は、私が質問をしたときに私の頭に浮かんだ最初のアイデアです。今度はパフォーマンスの問題を引き起こすことに気付きました。私はあなたの答えがより良い解決であることを認めます。 –

1

だから、私は、ユーザーモデルにスコープを設定します:

scope :project_managers, where(...) 

次に、あなたは、私はそれが正しいことだと思う

<%= f.select(:manager_user_id, User.project_managers.select { |user| user.has_role?(:ProjectManager) }.collect {|user| [user.full_name, user.id]}.sort{|a, b| a[0] <=> b[0]}, :prompt => "Select a Project Manager") %> 

言うことができます。まだ勉強してる。

0
ビューの書き込みで次に
class User < ActiveRecord::Base 
    scope :project_managers, where(...) 
end 

<%= f.collection_select(:manager_user_id, User.project_managers, :full_name, :id, :prompt => "Select a Project Manager") %> 

あなたは自分のスコープ内またはあなたのインスタンスメソッドでそれを行う:project_managers