2010-05-05 4 views
0

J'utilise cURL pour tester un service Web HTTP RESTFul. Le problème est que je suis normalement un tas soumet des valeurs normalement comme ceci:Ruby on Rails: réduire la complexité des paramètres dans une requête HTTP POST RESTFul (multimodèle)

curl -d "firstname=bob&lastname=smith&age=25&from=kansas&someothermodelattr=val" -H "Content-Type: application/x-www-form-urlencoded" http://mysite/people.xml -i 

Le problème avec ceci est mon contrôleur aura alors le code comme ceci:

unless params[:firstname].nil? 

end 
unless params[:lastname].nil? 

end 
// FINALLY 
@person = People.new(params[:firstname], params[:lastname], params[:age], params[:from]) 

etc ..

Quelle est la meilleure façon de simplifier cela? Mon modèle de personne a toutes les validations dont il a besoin. Est-il possible (en supposant que la demande comporte des paramètres multi-modèle) que je peux faire:

@person = People.new (params [: personne])

puis l'initialiseur peut prendre soin de la du repos?

Répondre

0

Désolé, la question est un peu floue. Demandez-vous comment imbriquer les paramètres dans la demande? Cela fonctionne comme ceci:

curl -d "person[firstname]=bob&person[lastname]=smith&person[age]=25&person[from]=kansas&someothermodel[attr]=val" -H "Content-Type: application/x-www-form-urlencoded" http://mysite/people.xml -i 

Ensuite, vous pouvez faire

@person = People.new(params[:person]) 
Questions connexes