2009-04-02 18 views
5

Wenn ich ein neues „Produkt“ mit meinem Gerüst erstellen Rails-Anwendung hinzufügen, die folgende Zeile fügt richtig ein neues ProduktZugriff auf POST-Parameter

@product = Product.new(params[:product]) 

Wenn ich versuche, ein neues Produkt mit der folgenden URL hinzufügen (versucht um Daten von einem Java-Programm zu senden).

http://localhost:3000/products?serial=555&value=111 

Das Produkt wird nicht erstellt, jedoch kann ich auf die „seriell“ und „Wert“ Werte wie folgt aus:

@product = Product.new 
@product.serial=params[:serial] 
@product.value=params[:value] 
@product.save 

Um zu verwirren mich, wenn ich die Rails-Anwendung verwenden ein hinzufügen neues Produkt, die Variablen params[:serial] und params[:value] sind leer.

Kann mir bitte jemand in die richtige Richtung weisen.

Dank

Antwort

9

Das Verfahren nimmt Model.new einen Hash.

params[:product] enthält tatsächlich so etwas wie {:serial => 555, :value => 111}

Die URL, die Sie verwenden möchten würde, ist:

http://localhost:3000/products?product[serial]=555&product[value]=111 

(Vergewissern Sie sich, dass Sie in der Tat POST verwenden)

Wenn Sie behalten möchten aktuelles URL-Schema, das Sie verwenden müssten:

@product = Product.new({:serial => params[:serial], :value => params[:value]}) 

Sie können auch genau bestimmen, was in params verfügbar ist es durch Ausdrucken auf die Konsole mit:

p params 

Viel Glück!

+0

Danke, arbeitete perfekt – brodie31k