NoMethodError:#<0x007facebc78c98>在Rails Minitest中未定义的方法'permit'>>0x007facebc78c98>

问题描述 投票:1回答:1

我在Rails Minitest中由于强参数而出现此permit错误。当我通过正常流程运行时(除了测试),这工作正常每当我运行测试时,都会给我这个奇怪的错误。

为什么这仅在测试时不起作用

parameter

@params_return_type = {:client_notes_and_action_items=>[{"notes_action_type"=>"return_help", "title"=>"test title", "description"=>"", "to_do_action_items_attributes"=>{"0"=>{"linked_item_id"=>"987", "linked_item_type"=>"client_purchases_shipping_detail", "initial_request"=>"true"}}, "estimated_completion"=>'Mon, 30 Mar 2020', "assigned_to"=>"45", "assigned_by"=>"41"}],"client_id"=>"76576"}

运行测试时出错

NoMethodError: undefined method `permit' for #<Hash:0x007facebc78c98>

你是说吗?打印

this is my strong parameter

私人

def  self.client_notes_and_action_item_params(params)
   params.permit( :client_id, :notes_action_type, :category, :description, :user_id, :image, 
   :comments, :status, :estimated_completion, :actual_completion, :title, 
   to_do_action_items_attributes: [:id, :linked_item_id, :linked_item_type, :deleted, 
   :initial_request])
end

我的api代码就是这样

params[:client_notes_and_action_items].each do |client_notes_and_action_item|
 ClientNotesAndActionItem.transaction do
 action_item = ClientNotesAndActionItem.new(client_notes_and_action_item_params(client_notes_and_action_item))

并且代码在代码的最后一行处中断

任何想法是什么问题。如果强参数是一个问题,那么我应该所有人都收到此错误,正常流程正常只有Minitest测试休息时间。

我在Rails Minitest中由于强参数而遇到此许可错误。当我通过正常流程运行时(除了测试),此方法工作正常。每当我运行测试时,都会出现此奇怪的错误。为什么...

ruby-on-rails ruby-on-rails-4 minitest strong-parameters
1个回答
0
投票

您需要将Hash对象转换为ActionController::Parameters对象,因为permitActionController::Parameters的方法

© www.soinside.com 2019 - 2024. All rights reserved.