当我试图编辑我的学生并改变他们的科目时,我编辑的最后一名学生失去了他的所有科目......有人可以帮帮我吗?示例:向Josh添加了数学。为Jenny添加了数学和历史。 Josh的科目现在是空的。
#students_controller
def edit
@subjects = Subject.all
end
def update
@subjects = Subject.find(subjects_params)
@subjects.each do |subject|
@student.subjects << subject
@student.save
end
if @student.update(student_params)
flash[:success] = "Success"
redirect_to students_path
else
flash[:danger] = "Error"
render :new
end
end
答案 0 :(得分:1)
不清楚必须实现什么逻辑,但我认为您需要将subjects_attributes
添加到student_params
方法。并在accept_nested_attributes_for :subjects
模型中添加Student
之后你可以做这样的事情
def update
@student.update(student_params)
end
这将为所选学生添加所需科目。 http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html有关嵌套属性的更多信息
另外,您可以看到包含所有嵌套属性的simple_nested_form
gem。