如何向ActionController :: Parameters添加/删除值

时间:2017-08-23 21:17:21

标签: ruby-on-rails parameters

在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>

1 个答案:

答案 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")