各位好,我有 hosts 跟 groups 两个表,这两个表的关系是 has_and_belongs_to_many,然后我想在修改一个 host 的所属 groups 的时候界面如下: 然后得到的
params[:host][:groups] 为 ["","3","4"] #3,4为groupid
问题一,为什么 multiple 类型的 select 框 post 过来的数据会多一个“”呢 问题二: 我使用 params 的数据再更新 host 的逻辑如下,主要分两步,更新除过 groups 以外的字段,update 关联表。 但是感觉怪怪的,所以想问下各位大大这种需求的普遍做法是怎么做的。
def update
@host=Host.find(params[:id])
params[:host][:groups].shift #去掉那个“”
if @host.update(host_params) and @host.groups=params[:host][:groups].collect {|g| Group.find(g)}
redirect_to @host
else
render 'edit'
end
end