在我的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']
当我尝试删除数组中的值时,它没有正确反映。
e.g。
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
对象吗?
答案 0 :(得分:2)
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') }