저는 조상을 사용하여 레일스에 계층 카테고리를 구축하고 있습니다. 사용자가 생성중인 객체의 부모를 선택할 수 있도록 허용합니다. 드롭 다운을 사용하여 기존 범주를 표시합니다.nil 부모가있는 조상의 레일
<%= f.input :ancestry, collection: Category.sorted_list %>
사용자가 기존 노드를 선택하면 모든 항목이 정상적으로 작동합니다. 사용자가 드롭 다운에서 빈 칸을 선택하면, Ancestry가 루트 노드를 만들 것이라고 기대하지만 폼 대신 "is invalid"오류가 발생합니다.
내 컨트롤러는 mindblowing하고 아무것도되지 않습니다
def update
@category = Category.find(params[:id])
respond_to do |format|
if @category.update_attributes(params[:category])
format.html { redirect_to @category, notice: 'Category was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @category.errors, status: :unprocessable_entity }
end
end
end
내가 레일에 새로운 해요, 그래서이 문제를 공격하는 방법을 모르겠어요. 내가 놓친 Ancestry에 대한 구성이 있습니까? 아니면이 양식 유효성 검사기가 아마도 과도한 보호 기능을 수행하고 있습니까?
어쩌면 나는 정확하게 카테고리 모델을 올바르게 설정하는 방법을 모르겠다. 내 양식에 a : parent_id select를 추가하면 컨트롤러에서 "보호 된 속성을 대량 할당 할 수 없습니다 : parent_id"오류가 발생합니다. 가계도와 parent_id 열을 모두 가지고 있어야합니까? –
데이터베이스에'parent_id'가 있어야 할 필요는 없습니다. 단지'ancestry' 컬럼뿐입니다. 하지만 대량 할당 오류를 피하기 위해서는'attr_accessible'에'parent_id'를 써야합니다. –
그게, 고마워요! –