用于#<ActionController :: Parameters> Rails的未定义方法`map'

Zia*_*mar 7 ruby-on-rails ruby-on-rails-5.1

我正在将我的rails应用程序从3.2.2升级到5.1.4.我通过使用params直接在map方法上得到错误.错误:

ActionController :: Parameters的未定义方法`map'

在下面的行.

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

在rails 5.1中做任何替代方案吗?

MrS*_*mek 10

您可以尝试使用以下命令将params转换为hash to_unsafe_h:

@assignments= params[:assignments].to_unsafe_h.map {|_k, value| Assignment.new(value.merge assignment_params)}
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用以下代码迭代params each:

@assignments=[]
params[:assignments].each{|(_k, value)| @assignments << Assignment.new(value.merge assignment_params)}
Run Code Online (Sandbox Code Playgroud)