Rails:如何更新HABTM复选框值

时间:2016-12-13 07:31:18

标签: ruby-on-rails checkbox

我正在关注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>
=====================

1 个答案:

答案 0 :(得分:0)

尝试@user.update(user_params.slice(:role_group_ids))