我有两个模型
具有 has_and_belongs_to_many 的项目:用户
和
拥有 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)
我怎样才能使它正常工作?