我必须在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 => []
答案 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)
简短的回答?
是,就是将数组传递给强参数的方式。
值得注意的是,如果您通过强参数传递数组,则必须在所有非数组参数之后引用。但是,在这种情况下,您已经这样做了。