2015-06-22 51 views
2

我必須在我的order_controller中傳遞food_item_ids數組。每個訂單都有很多food_items。我如何在強參數中將這些food_items_id作爲數組傳遞。如何在導軌中傳遞數組4強參數

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 => []

回答

3

發送陣列按照文檔https://github.com/rails/strong_parameters#permitted-scalar-values的正確方法:

允許的標量類型包括字符串, 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 => [] 
+0

謝謝。它的工作和理解。 – user5035102

1

簡短的回答?

是的,這就是你如何將一個數組傳遞給強參數。

值得注意的是,如果您通過強參數傳遞數組,他們必須在之後引用所有非數組參數。然而,在這種情況下,你已經在做這件事了。