2009-04-02 16 views
5

Quando aggiungo un nuovo "prodotto" usando il mio patibolo creare rotaie app, la riga seguente aggiunge correttamente un nuovo prodottodi accesso a parametri POST

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

Quando provo ad aggiungere un nuovo prodotto utilizzando il seguente URL (cercando per caricare i dati POST da un programma java).

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

Il prodotto non si crea, tuttavia posso accedere ai valori e "seriale" "valore" in questo modo:

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

Per me confondere ulteriormente, se uso l'applicazione rotaie per aggiungere un nuovo prodotto, le variabili params[:serial] e params[:value] sono vuote.

Qualcuno può indicarmi la giusta direzione.

Grazie

risposta

9

Il metodo Model.new prende un hash.

params[:product] contiene in realtà qualcosa di simile {:serial => 555, :value => 111}

l'URL che si desidera utilizzare è:

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

(Assicurarsi che si sta effettivamente usando POST)

Se si desidera mantenere il vostro schema url corrente che dovresti usare:

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

È anche possibile determinare esattamente ciò che è disponibile all'interno di params stampando fuori per consolare utilizzando:

p params 

Buona fortuna!

+0

Grazie, ha funzionato perfettamente – brodie31k