2013-05-02 36 views
5

aracılığıyla bir has_many içeren onay kutuları Birden fazla işveren için bir atama ataması gereken bir uygulama yapıyorum.Raylar 4:

Ben bu modelleri oluşturmak vardır:

#assignment.rb 
class Assignment < ActiveRecord::Base 
    has_many :employer_assignments 
    has_many :employers, :through => :employer_assignments 
end 

#employer.rb 
class Employer < ActiveRecord::Base 
    has_many :employer_assignments 
    has_many :assignments, :through => :employer_assignments 
end 

#employer_assignment.rb 
class EmployerAssignment < ActiveRecord::Base 
    belongs_to :employer 
    belongs_to :assignment 
end 

Ve şimdi formu employer_assignment tabloya kaydetmek ama benim form için kullanılan aşağıdaki kod çalışmaz istiyorum. Ben ödev oluşturduktan yapar ama employer_assignment tablosundaki kayıtları yaratmaz formu göndermek için çalıştıkları benim atama kontrolöre employer_ids:

<div class="field"> 
    <%= f.label :employer_ids %><br /> 
    <%= collection_check_boxes(:assignment, :employer_ids, Employer.all, :id, :name) %> 
</div> 

ben eklemek yaptı. Bunları konsoldan eklediğimde (Assignment.last.employers < < Employer.all ) her şey düzgün çalışıyor. Eminim bir şey özlüyorum ama ne olduğunu anlayamıyorum.

Şimdiden teşekkürler.

+0

Bunun için bir çözüm buldunuz mu. Ben benzer bir sorun yaşıyorum. DB – Benjamin

+1

IIRC raylarına kaydetme 4, varsayılan olarak, dizi türlerini desteklemeyen güçlü parametreler kullanır. Bu nedenle, 'işveren_seslerinin' bir dizi olması gerektiğini açıkça belirtmeniz gerekir, bunun için izin verilir. –

cevap

9

Muhtemelen bir Unpermitted parameters: günlüğünüzde, rails4'teki Güçlü Parametreler nedeniyle (@ emil-kampp bundan bahsetmişsinizdir), yeni bir raylar üretildikten sonra, denetleyicinizde üretilir.

class EmployersController < ApplicationController 
    # <snip> 
    def update 
    @employer.update(employer_params) 
    end 

    def employer_params 
    params.require(:employer).permit(:name, { :employer_ids => [] }) 
    end 
end 

Ayrıca, bu cevaplar SO bu Question bkz: Yani kodunu kullanarak o gibi bir şey olmazdı. Umarım bu bir kaç döngüyü kurtarır.