在Rails中添加/删除ActionController :: Parameters中的值的最佳方法是什么。 例如:
["foo bar baz", "foo", "bar", "baz"]
我需要这样的行为:
[96] pry(main)> params = ActionController::Parameters.new({controller: "home", action: 'index', prop1: "val"})
=> <ActionController::Parameters {"controller"=>"home", "action"=>"index", "prop1"=>"val"} permitted: false>
[97] pry(main)> my_params = params.permit(:prop1)
=> <ActionController::Parameters {"prop1"=>"val"} permitted: true>
[98] pry(main)> my_params.merge(prop1: "val2")
=> <ActionController::Parameters {"prop1"=>"val2"} permitted: true>
答案 0 :(得分:0)
Hash#merge
不会改变原作。执行此操作时params
不会更改。
params.merge(key: "value")
ActionController::Parameters
也是如此:
my_params.merge(prop1: "val2")
=> <ActionController::Parameters {"prop1"=>"val2"} permitted: true>
如果您想使用该调用的结果,您应该使用bang方法merge!
来改变my_params
,或者将结果分配给变量:
my_params = my_params.merge(some: "thing")