如何在rails 4中传递数组强参数

时间:2015-06-22 12:54:59

标签: ruby-on-rails arrays

我必须在order_controller中传递一个food_item_ids数组。每个订单都有很多food_items。如何将这些food_items_id作为强参数中的数组传递。

orders_controller.rb

def create  
        @order = Order.new(order_params)
        if @order.save
            render :json, @order, status:201, location: [:api, @order]
        else
            render :json, { errors: @order.errors }, status:422
        end
    end

private
  def order_params

    params.require(:order).permit(:customer_id, :order_id, :pos_id, :table_id, :order_number, 
          :order_status,:order_date, :food_item_id => [])
  end
end

这是以强params :food_item_id => []

发送数组的正确方法

2 个答案:

答案 0 :(得分:3)

根据文档https://github.com/rails/strong_parameters#permitted-scalar-values

  

允许的标量类型是String,Symbol,NilClass,Numeric,TrueClass,FalseClass,Date,Time,DateTime,StringIO,IO,ActionDispatch :: Http :: UploadedFile和Rack :: Test :: UploadedFile。

     

要声明params中的值必须是允许的标量值数组,请将键映射到空数组:

params.permit(:id => [])

如果它不起作用,您可能会拼写错误...您已询问如何通过food_items_id,但您允许:food_item_id => []。因此,仔细检查您在控制器中收到的params,您可能需要更改:

:food_items_id => []

答案 1 :(得分:1)

简短的回答?

,就是将数组传递给强参数的方式。

值得注意的是,如果您通过强参数传递数组,则必须在所有非数组参数之后引用。但是,在这种情况下,您已经这样做了。