#<ActionController::Parameters> Rails 5.1 的未定义方法“map”

undefined method `map' for #<ActionController::Parameters> Rails 5.1

我正在将我的 rails 应用程序从 3.2.2 升级到 5.1.4。 我直接在参数上使用 map 方法时遇到错误。 错误:

undefined method `map' for ActionController::Parameters

在下一行。

@assignments= params[:assignments].map {|_k, value| Assignment.new(value.merge assignment_params)}

在 rails 5.1 中有任何替代方法吗?

您可以尝试使用 to_unsafe_h:

将参数转换为散列
@assignments= params[:assignments].to_unsafe_h.map {|_k, value| Assignment.new(value.merge assignment_params)}

或者,您可以使用 each:

迭代参数
@assignments=[]
params[:assignments].each{|(_k, value)| @assignments << Assignment.new(value.merge assignment_params)}