Rails覆盖对象的数据

时间:2015-09-11 14:15:42

标签: ruby-on-rails sqlite

当我试图编辑我的学生并改变他们的科目时,我编辑的最后一名学生失去了他的所有科目......有人可以帮帮我吗?示例:向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

1 个答案:

答案 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。