1

我有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
4

1 回答 1

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,每次我们从集合选择中向组中添加一个新的锻炼时,都会在连接表中创建一个新记录。

于 2013-04-21T23:53:37.240 回答