使用collection_select创建HABTM关系中的多个记录 – Rails

我在训练和小组之间有一个has_and_belongs_to_many关系。

我在群组中有一个collection_select ,用于向群组添加锻炼。

问题是我只能更改HABTM表中的一条记录,所以我只能添加一条记录,然后编辑该记录。 如何添加其他记录?

有任何想法吗?

这是一些代码:

 show.html.erb:   ""} %>   

 class Workout < ActiveRecord::Base attr_accessible :name, :exercises_attributes, :workout_exercises_attributes, :group_ids has_and_belongs_to_many :groups 

 class Group < ActiveRecord::Base attr_accessible :cycle_id, :name, :next_group_id, :previous_group_id, :workout_ids has_and_belongs_to_many :workouts 

因此,答案是在控制器中编辑更新操作:

 workout_id = params[:group].delete(:workout_ids) # Adding a workout if workout_id workout = Workout.find(workout_id) @group.workouts << workout end 

上面的代码创建了一个局部变量workout_id ,它接受以下参数:group:workout_id :group 。例如,当您更改组的名称时, .delete方法会删除用于更新实际组的第二个参数。

然后我们简单地将一个新的训练推到@ group.workouts上,每次我们从集合选择中向该组添加新的训练时,在连接表中创建一个新记录。