In meiner Rails 3.2-Anwendung, erhalte ich die params
Variable in meinem Controller wie folgt:RoR - Entfernen eines Array-Elements aus Action :: Parameter
params.class => ActionController::Parameters
params[:a].class => ActionController::Parameters
params[:a][:b].class => Array
params[:a][:b] => ['1', '2', '3', '4']
Wenn ich versuche, einen Wert in das Array zu löschen, es spiegelt sich nicht richtig.
z.B.
params[:a][:b].delete('1')
=> "1"
Aber wenn ich es erneut abfrage, gibt es keine Änderung darin.
params[:a][:b] => ['1', '2', '3', '4']
Obwohl, wenn ich es einer Variablen zuweisen, funktioniert es gut.
arr = params[:a][:b]
arr.delete('1')
=> "1"
arr
=> ['2', '3', '4']
Jede Idee, warum es nicht direkt das params
Objekt aktualisieren?
Können Sie nur 'params' Werte posten? – dp7
Ich kann das nicht reproduzieren: 'params [: a] [: b] == ['1', '2']; params [: a] [: b] .delete ('1'); params [: a] [: b] == ['1', '2'] '. Mein Verdacht ist, dass Sie etwas Lustiges außer Kraft gesetzt haben, und "Params" macht etwas mehr, als ich erwarte. Können Sie den vollständigen, relevanten Controller-Code veröffentlichen? Idealerweise etwas reproduzierbar. –
Was passiert, wenn Sie 'arr = params [: a] [: b]; arr.delete ('1'); Parameter [: a] [: b] = arr; params [: a] [: b] '? – vitomd