2013-04-19 1 views
1

운동과 그룹 사이에 has_and_belongs_to_many 관계가 있습니다.collection_select를 사용하여 HABTM 관계에 여러 레코드 만들기 - 레일

그룹에 운동을 추가하는 데 그룹으로 사용하는 그룹이 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 

.

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

    # Adding a workout 
    if workout_id 
     workout = Workout.find(workout_id) 
     @group.workouts << workout 
    end 

위의 코드는 :group 내에서 매개 변수 :group:workout_id 소요 지역 변수 workout_id 작성

class Group < ActiveRecord::Base 
    attr_accessible :cycle_id, :name, :next_group_id, :previous_group_id, :workout_ids 

    has_and_belongs_to_many :workouts 

답변

1

그래서 이것에 대한 대답이와 컨트롤러의 업데이트 작업을 편집하는 것입니다 .delete 메서드는 예를 들어 그룹 이름을 변경할 때 실제 그룹을 업데이트하기위한 두 번째 매개 변수를 제거합니다.

그런 다음 우리는 간단하게 @ group.workouts에 새로운 워크 아웃을 푸시하고 컬렉션 select에서 그룹에 새로운 운동을 추가 할 때마다 조인 테이블에 새 레코드를 만듭니다.

+1

이 해결 방법은 저에게 맞습니다. 그것은 문제를 해결합니다. 그러나 나는 그것을 좋아하지 않는다. – GLindqvist