Ruby on rails Rails覆盖对象中的数据

Ruby on rails Rails覆盖对象中的数据,ruby-on-rails,sqlite,Ruby On Rails,Sqlite,当我试图编辑我的学生并更改他们拥有的科目时,我编辑的最后一个学生丢失了他的所有科目。。。有人能帮我吗?示例:为Josh添加了数学。给珍妮增加了数学和历史。乔希的主题现在是空的 #students_controller def edit @subjects = Subject.all end def update @subjects = Subject.find(subjects_params) @subjects.each do |subject| @student

当我试图编辑我的学生并更改他们拥有的科目时,我编辑的最后一个学生丢失了他的所有科目。。。有人能帮我吗?示例:为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
#学生#控制器
定义编辑
@subjects=Subject.all
结束
def更新
@主题=主题。查找(主题参数)
@受试者。每个人都做|受试者|

@student.subjects不清楚必须实现什么逻辑,但我认为您需要将
subjects\u属性添加到
student\u参数
方法中。并在
Student
模型中添加
accept\u嵌套的\u属性\u:subjects

之后你可以做类似的事情

def update
  @student.update(student_params)
end
这将为选定的学生添加所需的科目。 有关嵌套属性的详细信息


您还可以看到
simple\u nested\u form
gem,它包装了所有嵌套属性。

谢谢!我试试看:)