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)
所以简单地说,我想为一个小组添加锻炼,我可以这样做.然后我想为同一组添加另一个锻炼,然后是另一个,等等.
编辑:
本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上,每次我们从集合选择中向该组添加新的训练时,在连接表中创建一个新记录.
| 归档时间: |
|
| 查看次数: |
2066 次 |
| 最近记录: |