2016-06-30 6 views
1

Ich versuche, einen neuen Eintrag in meiner Datenbank zu erstellen, der ein Array images enthält.Array in JSON wurde nicht ordnungsgemäß an Datenbank übergeben

Mit Product.new("title":"Hello World", "images":["a.jpg","b.jpg"]) kann ich einen neuen Eintrag ohne Probleme erstellen. Aber wenn ich versuche, die Parameter an meine API zu übergeben, bleibt das Array leer (alle anderen Felder sind gefüllt).

Die Anfrage habe ich:

curl -i -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"title":"Hello World", "images":["a.jpg", "b.jpg"], "api_key":"API_KEY"}' http://localhost:3000/api/products 

Parameter werden mit übergeben:

def product_params 
    params.require(:product).permit(:id, :title, :images) 
end 

Eine neue Datenbank-Eintrag wird dann mit erstellt:

Product.new(product_params) 

Jede Hilfe ist sehr geschätzt.

Antwort

2

Verwenden Sie images: [].

über: https://stackoverflow.com/a/18641790/1076207

Aus der Dokumentation [https://github.com/rails/strong_parameters]

Die zulässigen skalare Typen sind String, Symbol, NilClass, Numerisch, Trueclass, False, Datum, Uhrzeit, Datum- und StringIO, IO, ActionDispatch :: Http :: UploadedFile und Rack :: Test :: UploadedFile.

zu erklären, dass der Wert in params Skalarwerte Karte den Schlüssel zu einem leeren Array ein Array von erlaubt sein muss:

def product_params 
    params.require(:product).permit(:title, images: []) 
end