2016-07-11 12 views
1

Ich habe eine Rails App, in der ich versuche, ein Modell mit den Attributen zu aktualisieren, die ich im Hash bekomme.Rails update_attributes mit dynamischem Hash

Mein Code ist:

attr_hash = {"name"=>"cat_name"} 

@category.update_attributes(attr_hash, :type => 'sample') 

Hier ist, was ich will, dass Typ festgelegt werden und das attr Hash jede Attribut Basis auf dem Formular sein kann. Aber das gibt mir einen Fehler. Irgendwelche Ideen?

Antwort

2
attr_hash = {"name"=>"cat_name"} 

@category.update_attributes(attr_hash.merge(type: "sample")) 

(weil update_attributes dauert nur einen Hash)

Erläuterung:

Derzeit sind Sie vorbei dies:

update_attributes({"name"=>"cat_name"}, {type: "sample"})

aber Sie wollen diese:

update_attributes({"name"=>"cat_name", type: "sample"})

Sie müssen also diese beiden Hashes zusammenführen.

+0

Ich bekomme ActiveModel :: ForbiddenAttributesError beim Versuch, die Hash-Variable in der Update-Methode zu setzen. – user4965201

+0

Hat Ihre @category eine 'name' und eine' type' Spalte? Bitte teilen Sie den gesamten Controller-Code. Ich nehme an, dass Sie die Parameter nicht benötigen, die Sie übergeben möchten. Sie haben so etwas wie: 'params [" category "] [" name "]' aber Sie müssen es so erhalten: 'params.require (: category) .permit (: name) ' – siegy22

+0

ich habe nicht die params params .. my bad – user4965201