RoR - 从 ActionController::Parameters 中删除数组元素
RoR - Removing an array element from ActionController::Parameters
在我的 Rails 3.2 应用程序中,我在控制器中获取 params
变量,如下所示:
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[:a][:b].tap { |ary| ary.delete('1') }
#=> ['2', '3', '4']
要更改 params[:a][:b]
的值,您需要为其分配一个新值:
params[:a][:b] = params[:a][:b].tap { |ary| ary.delete('1') }
在我的 Rails 3.2 应用程序中,我在控制器中获取 params
变量,如下所示:
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[:a][:b].tap { |ary| ary.delete('1') }
#=> ['2', '3', '4']
要更改 params[:a][:b]
的值,您需要为其分配一个新值:
params[:a][:b] = params[:a][:b].tap { |ary| ary.delete('1') }