1

私はhas_and_belongs_to_manyワークアウトとグループの間に関係があります。

グループにワークアウトを追加するために使用しているcollection_selectグループがあります。

問題は、HABTM テーブルの 1 つのレコードしか変更できないため、1 つのレコードしか追加できず、そのレコードを編集できないことです。レコードを追加するにはどうすればよいですか?

何か案は?

ここにいくつかのコードがあります:

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内から、たとえばグループの名前を変更したときに実際のグループを更新するための 2 番目のパラメーターを削除します。:group.delete

次に、新しいワークアウトを @group.workouts にプッシュするだけで、コレクションの選択からグループに新しいワークアウトを追加するたびに、結合テーブルに新しいレコードが作成されます。

于 2013-04-21T23:53:37.240 に答える