使用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上,每次我们从集合选择中向该组添加新的训练时,在连接表中创建一个新记录。