2014-02-05 4 views
2

저는 첫 번째 프로젝트에서 작업하는 레일 멍청한 작업자입니다.레일 : HABTM 관계에 대한 form_for check_box를 통해 여러 매개 변수 지정

has_and_belongs_to_many 관계를 사용하여 두 모델을 연결했습니다 : Wine과 Shop. 간단하게 와인을 다른 상점에서 판매 할 수 있으며 특정 상점에서는 다양한 와인을 판매 할 수 있습니다. 다음은 모델입니다.

내 목표는 와인을 구입할 수있는 상점을 비롯하여 와인의 인스턴스를 만드는 양식을 만드는 것입니다. 나는이에 많은 것을 및 소요 시간을 시도했지만 해결책을 찾을 수 없습니다

<% @shops.each do |t| %> 
<%= f.label t.name %> 
<%= f.check_box :shops, t.id %> 
<% end %> 

:

def new 
    @wine = wine.new 
    @shops = Shop.all 

    respond_to do |format| 
     format.html # new.html.erb 
     format.json { render json: @wine } 
    end 
    end 

def create 
    @wine = Wine.new(params[:wine]) 
    params[:shops].each do |id| 
     @wine.shops << Shop.find(id) 
    end 
end 

여기 새로운 뷰에서 렌더링 내 _form보기입니다 : 여기 내 wines_controller입니다. 무엇보다도 나는 그 문제에 대해 살펴했지만, 나는 그것이 작동 가져올 수 없습니다 :

  • Creating multiple records in a HABTM relationship using a collection_select - Rails
  • 답변

    2

    당신은 또한 당신에게 crreate 방법을 단순화 할 수 있습니다

    def create 
        @wine = Wine.new(params[:wine]) 
        @shops = Shop.find params[:shops] 
        @wine.shops = @shops 
        .. 
    
    +0

    <% @shops.each do |t| %> <%= f.label t.name %> <%= check_box_tag "shops[]", t.id %> <% end %> 

    및 컨트롤러 코드를 시도 사전에

    덕분에 와인 ]) @ wine.shops << Shop.find (params [: shops]) end' – BroiSatse

    +0

    여전히 3을위한'정의되지 않은 메소드'merge '가 있습니다 : Fixnum' 3. sh의 하나의 id op – SBfrr

    +0

    @SBfrr, 내 대답을 업데이트 – Santhosh