チェックボックスを使用してユーザーの位置のブール属性を更新しようとすると、この一括割り当てエラーが引き続き発生する理由がわかりません (ブール属性は「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
フィードバック/ヘルプをいただければ幸いです。ありがとう!