我收到此错误并使用Rails 5。
NoMethodError(未定义方法
permit' for #<Array:0x007f51cf4dc948> app/controllers/traumas_controller.rb:99:in
trauma_params'app / controllers / traumas_controller.rb:25:在`create_multiple'中
控制器参数如下。
在2016-10-04 20:09:36开始POST“/ traumas / create_multiple”for 127.0.0.1 +0530由TraumasController处理#create_multiple as JS 参数:{“utf8”=>“✓”,“fields”=> [{“contusions”=>“1”,“burns”=>“”,“at_scene”=>“在场景”,“emergency_detail_id”= >“96”,“trauma_region”=>“Head-Back”}],“commit”=>“提交”}
我试图在控制器中创建如下记录:
def create_multiple
trauma_params
params[:fields].each do |values|
u = Trauma.create(values)
end
end
def trauma_params
params.require(:fields).permit(:fields => [])
end
请帮我解决这个问题。
提前致谢。
基兰。
我通过引用这个(https://github.com/rails/strong_parameters/issues/140)github问题来解决它。
编辑
对于以下参数(在Array中):
参数:{“fields”=> [{“contusions”=>“1”,“burns”=>“”,“at_scene”=>“在场景”,“emergency_detail_id”=>“96”,“trauma_region”= >“Head-Back”}],“commit”=>“提交”}
我们可以做的:
def trauma_params
params.require(:fields).map do |p|
ActionController::Parameters.new(p).permit(
:contusions,
:burns,
:at_scene,
:emergency_detail_id,
:trauma_region
)
end
end
参数:
{"fields"=>[{"contusions"=>"1", "burns"=>"", "at_scene"=>"At Scene", "emergency_detail_id"=>"96", "trauma_region"=>"Head-Back"}]}
白名单对象数组,需要“fields”属性:
def trauma_params
params.permit(fields: [
:contusions,
:burns,
:at_scene,
:emergency_detail_id,
:trauma_region
])
.require(:fields)
end
资料来源:https://edgeguides.rubyonrails.org/action_controller_overview.html#nested-parameters