2015-04-23 6 views
7

Ich habe das gleiche Problem wie dieses one_destroy funktioniert nicht in Coocon gem mit Rails 4

Aber diese Lösung hat mir nicht geholfen. Hier sind meine starken params:

def request_params 
 
    params.require(:request).permit(:name, :address, :phone, :mobile, :type, 
 
    :filled_cartridges_attributes => [:cartridge_name,:client_id,, 
 
\t \t \t \t :count,:_destroy,:id], \t \t \t \t \t \t \t

So habe ich: _destroy und: id. Der Typ im vorherigen hat vergessen hinzuzufügen: ID zu starken params. Das Hinzufügen einer ID löste sein Problem.

Hier ist meine Anfrage Modell:

has_many :filled_cartridges, inverse_of: :request, dependent: :destroy 
 
\t accepts_nested_attributes_for :filled_cartridges, :reject_if => :all_blank, allow_destroy: true

Und so params aussehen wie nach der Einreichung:

request: 
 
...some params.... 
 
filled_cartridges_attributes: !ruby/hash:ActionController::Parameters 
 
    '0': !ruby/hash:ActionController::Parameters 
 
     cartridge_name: HP LaserJet3000 
 
     _destroy: 'false' 
 
     id: '1' 
 
    '2': !ruby/hash:ActionController::Parameters 
 
    cartridge_name: new 9 
 
    _destroy: '1' 
 
    id: '13'

hier t er 2. sollte zerstört werden. Aber es tut es nicht.

+0

Wie weisen Sie dem Modell Parameter zu? – BroiSatse

+0

@BroiSatse was meinst du? – yerassyl

+0

Sie haben Ihre Parameter in Ihrem Controller, aber was machen Sie mit ihnen? Können Sie die Controller-Aktion anzeigen? Wird das erste Objekt auch aktualisiert? – BroiSatse

Antwort

0

Sie sollten hinzufügen: _Destroy und: ID auf Ihre zulässigen Parameter zu dem angegebenen verschachtelten Attribut.