2009-04-02 10 views
5

Lorsque j'ajoute un nouveau « produit » en utilisant mon échafaudage créer rails app, la ligne suivante ajoute correctement un nouveau produitaccès aux paramètres POST

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

Lorsque je tente d'ajouter un nouveau produit en utilisant l'URL suivante (essayer POST des données à partir d'un programme Java).

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

Le produit ne se crée pas, mais je peux accéder aux valeurs « série » et « valeur » comme ceci:

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

Pour mieux me confondez, si j'utilise les rails app pour ajouter un nouveau produit, les variables params[:serial] et params[:value] sont vides.

Est-ce que quelqu'un peut me diriger dans la bonne direction?

Merci

Répondre

9

La méthode Model.new prend un hachage.

params[:product] contient en fait quelque chose comme {:serial => 555, :value => 111}

L'URL que vous souhaitez utiliser est:

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

(Assurez-vous que vous êtes bien utilisez POST)

Si vous voulez garder votre schéma actuel de l'URL que vous auriez à utiliser:

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

Vous pouvez également déterminer exactement ce qui est disponible à l'intérieur de params en l'imprimant à la console en utilisant:

p params 

Bonne chance!

+0

Merci, a travaillé parfait – brodie31k