假设我有如下定义的多对多关系:
在我的用户模型中:
class User < ActiveRecord::Base
attr_accessible :userName (...)
has_and_belongs_to_many :groups
end
在我的小组模型中:
class Group < ActiveRecord::Base
attr_accessible :groupName (...)
has_and_belongs_to_many :users
end
我在更新中添加了我的用户控制器并创建:
@user.group_ids = Group.find(params[:group_ids]) if params[:group_ids]
用户表单包含一个多选列表,用于为每个用户选择组(以及实际工作的其他条件):
<%= select_tag("group_ids[]", options_for_select(Group.find(:all).collect { |gro| [gro.groupName, gro.id] }, @user.groups.collect { |gro| gro.id}), {:multiple=>true, :size=>15}) %>
当我创建或更新用户时,一切看起来都很好,但无论我在选项列表中做出什么选择,它都会向用户添加错误的组(总是id = 1的组)。
我尝试使用has_many_through
并迁移了数据库,但也遇到了问题。
你知道如何进行作业吗?
答案 0 :(得分:0)
您可以使用详细信息中的f.select表单帮助程序而不是select标记:Rails 3: Multiple Select with has_many through associations
此外,还有双面多重选择,如下所述:two sided multi select that works with Rails 3
我推荐http://loudev.com/中的那个,你只需要使用:
<%= f.select(:country, "country_id", Country.all.collect {|c| [ c.name, c.id ] }, {:include_blank => false}, {:class => "multiselect", :multiple => "multiple"}) %>
并在您的视图中添加以下Javascript:
<script>
$(document).ready(function (){
$('.multiselect').multiSelect();
});
</script>