次のように、私は私のコントローラでparams
変数を取得しています:RoRの - ActionControllerから配列要素を削除::パラメータ私のRails 3.2のアプリケーションで
params.class => ActionController::Parameters
params[:a].class => ActionController::Parameters
params[:a][:b].class => Array
params[:a][:b] => ['1', '2', '3', '4']
私は、配列内の値を削除しようとすると、それは正しく反映されていません。
params[:a][:b].delete('1')
=> "1"
しかし、もう一度クエリを実行すると、変更はありません。
params[:a][:b] => ['1', '2', '3', '4']
変数に変数を再割り当てしても問題ありません。
arr = params[:a][:b]
arr.delete('1')
=> "1"
arr
=> ['2', '3', '4']
私はparams
オブジェクトを直接更新できません。あなたが唯一の `params`値を投稿することができます
params[:a][:b] = params[:a][:b].tap { |ary| ary.delete('1') }
: – dp7
これを再現することはできません: 'params [:a] [:b] == ['1'、 '2']; params [:a] [:b] .delete( '1'); params [:a] [:b] == ['1'、 '2'] '。私が疑問に思うのは、あなたが何か面白いものを上書きしたということです。そして、 'params'は私が期待する以上のことをしています。関連性の高い完全なコントローラコードを投稿できますか?理想的には再現可能なもの。 –
'arr = params [:a] [:b]を実行するとどうなりますか? arr.delete( '1'); params [:a] [:b] = arr; params [:a] [:b] '? – vitomd