我正在关注railscast 17-- HABTM checkbox
以向我的用户模型添加属性。
<%= hidden_field_tag 'user[role_group_ids][]',nil %>
<% RoleGroup.all.each do |role_group|%>
<%= check_box_tag 'user[role_group_ids][]',role_group.id,
@user.role_group_ids.include?(role_group.id) %>
<%= role_group.name %><br>
<% end %>
在更新操作中,如果我更新这样的所有属性,一切正常。
def update
@user = User.find(params[:id])
@user.update(user_params)
end
def user_params
params.require(:user).permit(:username, :password, :password_confirmation, role_group_ids:[])
end
但我只是想更新复选框的值而不是所有属性,我尝试了这个,但它不起作用。
def update
@user = User.find(params[:id])
@user.update_attribute(:role_group_ids, user[role_group_ids])
end
任何人都可以告诉我如何解决这个问题?
=================更新===============
def update
@user = User.find params[:id]
@user.update(user_params.slice(:role_group_ids))
puts '====================='
puts user_params.slice(:role_group_ids)
puts '====================='
end
这也无法更新,输出就像这样
=====================
#<ActionController::Parameters:0x007faae0656c50>
=====================
答案 0 :(得分:0)
尝试@user.update(user_params.slice(:role_group_ids))