2

在 Rails 4 中,我可以合并!StrongParams,但自从 rails 5 (beta1) 合并!不可用。这是在控制器中执行此操作的最佳方法

  params = ActionController::Parameters.new({
             name: 'Francesco',
             age:  22,
             role: 'admin'
         })
         params.merge!(city: "Los Angeles")
4

4 回答 4

8

据我从源代码中可以看出,你merge没有merge!。换句话说,似乎不可能就地修改散列。

以下代码将起作用:

params = ActionController::Parameters.new({
             name: 'Francesco',
             age:  22,
             role: 'admin'
         })
params = params.merge(city: "Los Angeles")
于 2016-01-05T21:00:55.330 回答
2

params.merge!(city: "Los Angeles") 适用于 Rails5.0.1

在此处输入图像描述

在 Rails 5 中:ActionController::Parameters 现在返回对象而不是哈希。

所以你必须使用 params.permit(:city).to_h 来访问城市。

有关 ActionController::Parameters 如何在 Rails5 中工作的更多详细信息?

参考:http ://www.rortuts.com/ruby-on-rails/rails5-actioncontrollerparameters/

于 2017-02-23T14:21:34.957 回答
0

希望这对任何人都有帮助。

def comment_params
  params.require(:comment).permit(:title, :user_id, :color)
end

我想将颜色属性与我的自定义颜色代码或名称合并。所以动态合并颜色属性

像这样初始化rails 5中的参数,

params = ActionController::Parameters.new(comment_params)
params = params.merge(color: "green")
于 2016-04-02T06:12:28.620 回答
-1
new_params = params.to_h.merge(city: "Los Angeles")
于 2016-08-22T21:08:20.700 回答