HABTM添加新关联以加入表

Are*_*rel 1 ruby-on-rails has-and-belongs-to-many

如何has_and_belongs_to_many在两个模型之间的表中添加多个记录?

到目前为止,我只能弄清楚如何创建一条记录,然后更新该记录.我想在连接表中添加多个记录.

现在我有一个collection_select,但更新方法只允许我更新记录,而不是添加新记录.

我最好的猜测是@group.workouts << workout_id在组控制器中添加类似于更新方法的东西,但我无法弄清楚如何让它工作.

我在这里走在正确的轨道上吗?

我正在尝试将训练添加到组和组进行训练.

谢谢您的帮助!

编辑1:

我有一个collection_select允许我添加单个记录到连接表,但我想弄清楚如何添加第二个,第三个等记录到连接表.我collection_select是:

<div class="field">
    <%= f.collection_select 'workout_ids', Workout.all, :id, :name, { :include_blank => ""} %>
</div>
Run Code Online (Sandbox Code Playgroud)

所以简单地说,我想为一个小组添加锻炼,我可以这样做.然后我想为同一组添加另一个锻炼,然后是另一个,等等.

Are*_*rel 5

编辑:

本Gist中详细介绍了正确执行此操作的实际方法

所以答案是用控制器来编辑控制器中的更新操作:

workout_id = params[:group].delete(:workout_ids)

    # Adding a workout
    if workout_id
      workout = Workout.find(workout_id)
      @group.workouts << workout
    end
Run Code Online (Sandbox Code Playgroud)

上面的代码建立一个局部变量workout_id,是以参数:group:workout_id从内:group.delete方法去除用于更新实际组时更改该组的名称,例如第二个参数.

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