0
AssessmentItem에는 많은 ItemLevel이 있고 ItemLevel에는 AssessmentItem이 속합니다. 내 모델에서 나는 아이템을 업데이트 할 때, 당신은 수준이 그 항목과 연관 될 것을 지정 할 수 있어야한다 금지 된 속성 Postman을 사용하여 Rails 4에서 중첩 속성을 할당 할 때 오류가 발생했습니다.
has_many :item_levels
accepts_nested_attributes_for :item_levels
있습니다. 업데이트 작업은 레벨에 대해 지정된 매개 변수를 받아야하며 업데이트되는 Item과 관련된 새 ItemLevel 객체를 만들고 이전에 연결하고 업데이트시 지정하지 않은 레벨을 삭제해야합니다. 그러나 새 레벨을 만들려고하면
ActiveModel::ForbiddenAttributes
오류가 발생합니다.
컨트롤러 :
def update
@item = AssessmentItem.find(params[:id])
old_levels = @item.item_levels #active record collection
@item.update_attributes(update_params)
convert_levels = old_levels.map {|l| l.attributes} #puts into array
(items - convert_levels).each{|l| ItemLevel.create(l)} ##causes error
(convert_levels - level_params).each { |l| ItemLevel.find(l["id"]).destroy }
end
end
private
def level_params
params.require(:assessment_item).permit(:item_levels => [:descriptor, :level])
end
def update_params
params.require(:assessment_item).permit(:slug, :description, :name)
end
이것은 이죠 내 JSON 요청 :
{
"assessment_item": {
"slug" : "newSlug",
"description" : "NewDescriptiong",
"name" : "different name",
"item_level_attributes":[
{
"descriptor":"this should be new",
"level":"excellent"
}
]}
}
가 어떻게 매개 변수를 허용하는 내 조치를받을 수 있나요? 어떻게하면 공장에 효과적으로 전달할 수 있습니까? 감사.