0

我不确定为什么在尝试使用复选框更新用户位置的布尔属性时仍然收到此批量分配错误(布尔属性为“is_visible”):

这是质量分配错误:

'Can't mass-assign protected attributes: position'

一个用户拥有多个职位。位置具有属性“is_visible”,它是布尔值。

你会注意到我在我的用户模型中包含了“accepts_nested_attributes_for”。我还在我的用户模型中包含“positions_attributes”作为可访问属性。

我的用户模型的摘录:

class User < ActiveRecord::Base

attr_accessible :position_ids, :positions_attributes

has_many :positions, dependent: :destroy
accepts_nested_attributes_for :positions

end

我的职位模型:

class Position < ActiveRecord::Base
  attr_accessible :is_visible

  belongs_to :user  
end

摘自我的观点:

<%= form_for(@user) do |f| %>
  <% @positions.present? and @positions.each do |position| %>
    <%= f.fields_for position do |p| %>
      <%= p.check_box :is_visible %>
    <% end %>
    Make this positions visible
<% end %>

现在从我的用户控制器:

  def edit_profile
    @user = current_user
    @preferred_venue = @user.preferred_venues.last if @user.preferred_venues
    @positions = @user.positions
    @educations = @user.educations
  end

  def update
    @user = User.find(params[:id])

    if @user.update_attributes(params[:user])
      flash[:success] = "Profile saved"
      redirect_to @user
    end

  end

将不胜感激任何反馈/帮助。谢谢!

4

0 回答 0