【问题标题】:undefined method `permit' for Array数组的未定义方法“permit”
【发布时间】:2021-04-09 08:21:43
【问题描述】:

参数如下

{
  "orders"=>[
    <ActionController: : Parameters{
      "line_items"=>[
        {
          "id"=>2807935,
          "segment_type"=>"DrivingSegment",
        }
      ],
      "order_id"=>484372,
      "calling_order_id"=>484371
    }permitted: false>
  ],
}permitted: false>

代码如下

 def update
          order_params.each do |order_param|
            order = Order.find(order_param[:order_id])
            order.assign_attributes({
              line_items_attributes: order_param[:line_items]
            })
            ...
          end
          render json: {}, status: :ok
        end

   

def order_params
      params
        .require(:orders)
        .permit(
          line_items: %i[
            id
            segment_type
          ],
          :order_id
        )
    end

如您所见,orders 是一个数组。每个订单都有一个订单项数组。 当我尝试 assign_attributes 我收到以下错误 undefined method `permit' for Array

知道如何在这里正确地允许参数吗??

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    鉴于您的参数的性质,您可以跳过要求并允许

    order_params.permit(orders: [line_items: [:id, : segment_type], :order_id])

    您可以查看https://github.com/rails/strong_parameters#nested-parameters 了解更多示例

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-31
      • 2018-11-05
      相关资源
      最近更新 更多