私は2つのモデルを持っています
has_and_belongs_to_many :users を持つプロジェクト
と
has_and_belongs_to_many :projects を持つユーザー
プロジェクト ビューには、複数のユーザーをプロジェクトに割り当てようとするセレクターを含むフォームがあります。
<%= select_tag("project[users]", options_for_select(@users, @project_users), {:multiple=>true, :size=>6} )%>
私のプロジェクトコントローラーでは、選択で使用される変数は
@project_users = @project.users.collect { |user| user.id}
@users = User.all.collect { |user| ["#{user.first_name} #{user.last_name}", user.id] }
全力を尽くす
<select id="project_users" multiple="multiple" name="project[users][]" size="6">
<option value="#<User:0x007f567cb7f078>">User1</option>
<option value="#<User:0x007f567cb7e9c0>">User2</option>
</select>
問題は、これが次と同等ではないことです
@some_project << [User(#), User(#)]
(「User(#) はクラス インスタンスを表すことに注意してください」)
代わりに、
@some_project << ["1", "2"]
問題は、ユーザー インスタンスが文字列に変換されますが、インスタンスに戻らないことです。
これは機能せず、エラーがスローされます
ActiveRecord::AssociationTypeMismatch in ProjectsController#update
User(#70004716784160) expected, got String(#4266680)
どうすればこれを正しく機能させることができますか?