views:

134

answers:

2

I'm working on an iPhone app and I need to figure out how to properly nest the information in the URL (really a POST body) in order for rails to recognize it as an object hash such as:

 Parameters: {:student => {:name => "Bob", :age => "13"}, :user_credentials=>"..."}

I've tried the following two ways and neither work for me:

/student?user_credentials="..."&student={name="bob"&age="13"}
/student?user_credentials="..."&student=[name="bob"&age="13"]

Both of which basically set the Parameters to {student=>"{name=", age=>"13]", :user_credentials=>"..."}

The code works as far as getting the information there in a POST body, I'm just trying to figure out how to format the string properly. I hope that is clear enough.

A: 

The correct way to urlencode input for rails to recognize it as a hash would be

student[name]=bob&student[age]=13

This can be nested many levels deep:

student[location][city]=New%20York

would represent
"student" => { "location" => { "city" => "New York" } }

Crast
A: 

Having written a few rails apps that talk to iphone apps, I would also recommend against this, and instead communicate by posting data in json or xml format. Teaching your iphone app to 'speak' rails parameter encoding seems like a Bad Idea.

Take a look at Objective Resource a a pretty complete implementation of using REST-like calls using JSON or xml to pass data back and forth: http://iphoneonrails.com/

Andrew Kuklewicz