ruby-on-rails - 无方法错误 : undefined method `permit' for #<Hash:0x007facebc78c98> in Rails Minitest

标签 ruby-on-rails ruby-on-rails-4 minitest strong-parameters

我在 rails Minitest 中收到强参数的 permit 错误。 当我通过正常流程运行时(除了测试)这工作正常 每当我运行测试时,它都会给我这个奇怪的错误。

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

参数

@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>

你的意思是?打印

这是我的强参数

私有(private)

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 测试中断。

最佳答案

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

params = {: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"}
@params_return_type = ActionController::Parameters.new(params)

试一试。

关于ruby-on-rails - 无方法错误 : undefined method `permit' for #<Hash:0x007facebc78c98> in Rails Minitest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60702390/

相关文章:

ruby-on-rails - 从 rails 中的属性中删除所有 html 标签

ruby-on-rails - rails 4 使用强参数而没有 Controller

ruby-on-rails - rails-observers vs wisper gem

ruby-on-rails - 如何通过 minitest 测试 after_sign_in_path_for

css - 在 Rails 4 应用程序中添加 Bootstrap 下拉样式

javascript - V8 中的 fatal error

ruby-on-rails - Rails Rspec 套件有故障,但在单独运行时通过

ruby - Minitest:没有更多可用的期望

ruby-on-rails - 模拟时遇到问题 `Resolv::DNS.open`

sql - 没有 UNION 的库存 SQL 查询?