我正在尝试在用户和类别之间保存新的HABTM关系。
我的用户模型:
class User < ActiveRecord::Base
has_and_belongs_to_many :categories
end
我的分类型号:
class Category < ActiveRecord::Base
has_and_belongs_to_many :users
end
我正确设置了连接表。问题是,我无法在用户控制器上进行任何更改,只能在用户视图上进行更改。因此,在用户视图中,有一个collection_select:
<%= f.collection_select :category_ids, Category.all, :id, :title,
{ :selected => @user.category_ids },
{ :multiple => true, :name => 'user[category_ids][]' }
-%>
我可以选择我的用户所属的类别,但是当我点击提交时,除了在连接表上未更新的类别之外,其他每个属性都会被保存。
如果我检查params,我可以看到category_ids正确传递:
"user"=>{"category_ids"=>["2", "4"]
但我无法在用户控制器上做任何事情,因为我不允许乱用代码。有没有办法自动更新连接表,或者我必须手动更新它?
PS - 我不能弄乱用户控制器,因为我实际上正在为Redmine构建一个插件。
谢谢!
答案 0 :(得分:0)
<% for category in Category.find(:all) %>
<%= check_box_tag "user[categories_ids][]", category.id, @user.categories.include(category) %>
<%= category.title %>
<% end %>
另外,请仔细检查您的attr_accessible是否全部存在。