2011-12-28 7 views
0

私は、リレーショナルテーブルを持つレールに選択ボックスを自動入力しようとしています。Railsはcollection_selectを設定します

Venture_UsersにはユーザーとベンチャーIDのリストがありますので、特定のベンチャーの下にすべてのユーザーを見つけて、user_idとuser.nameでユーザーを表示したいと考えています。

私は、しかし最後の属性以下

 <%= f.collection_select(:user_id, VentureUser.find_all_by_venture_id(@venture.id), :user_id, :name) %> 

を試してみました:それは私の結果に直接ではなく、私はの名前を得るために、私のユーザーテーブルにクエリを実行する必要があるため、名前は動作しません。ユーザー。'

私が必要としているが、行う方法がわからないのは、私のVentureUsers.find_allステートメントを変更して、ユーザーテーブルの属性を結合することです。

おかげで、 マイク

答えて

2

は、これは非常にまっすぐ進む限り、あなたはあなたの関連付けが正しく設定されているようにする必要があります。

<%= f.collection_select(:user_id, @venture.users, :id, :name) %> 
:あなたの団体が実際にこのように見える場合、あなたはこのような選択を作成することができるはず

class Venture < ActiveRecord::Base 
    has_many :venture_users 
    has_many :users, :through => :venture_users 
end 

class VentureUser < ActiveRecord::Base 
    belongs_to :venture 
    belongs_to :user 
end 

:私はあなたのシナリオを理解している場合は正しく、あなたはおそらく、それはこのように設定する必要があります

+0

は美しく働いた。私はレールが新しく、the:throughメソッドを知らなかった。どうもありがとう。 –

関連する問題