我在训练和小组之间有has_and_belongs_to_many
的关系。
我在群组中有一个collection_select
我正用于向群组添加锻炼。
问题是我只能更改HABTM表中的一条记录,所以我只能添加一条记录,然后编辑该记录。如何添加其他记录?
有什么想法吗?
以下是一些代码:
show.html.erb:
<%= form_for(@group) do |f| %>
<%= f.collection_select 'workout_ids', Workout.all, :id, :name, { :include_blank => ""} %>
<%= f.submit %>
<% end %>
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
答案 0 :(得分:1)
所以答案是用控制器编辑控制器中的更新操作:
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,每次我们从集合选择中向组添加新的训练时,在联接表中创建新记录。