我必须在我的 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
这是在强参数中发送数组的正确方法吗 :food_item_id => []
最佳答案
根据文档https://github.com/rails/strong_parameters#permitted-scalar-values :
The permitted scalar types are String, Symbol, NilClass, Numeric, TrueClass, FalseClass, Date, Time, DateTime, StringIO, IO, ActionDispatch::Http::UploadedFile and Rack::Test::UploadedFile.
To declare that the value in params must be an array of permitted scalar values map the key to an empty array:
params.permit(:id => [])
如果它不起作用,您可能有拼写错误...您已询问如何传递 food_items_id
,但您允许 :food_item_id => []
。因此,请仔细检查您在 Controller 中收到的params
,您可能需要更改:
:food_items_id => []
关于ruby-on-rails - 如何在rails 4中传递数组强参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30980543/