简体   繁体   中英

Posting JSON data to rails controller?

I'm having some problems posting JSON data to my rails controller and getting the fields from my JSON data to map onto the paremeters to create my entity.

Here's what the action looks like:

def create
  @trip = Trip.new(params[:trip])
  if @trip.save
    respond_to do |format|
      format.json{render :json => @trip, :status => :created, :location => @trip }
    end
  end
end

And here's the output from the web server:

Started POST "/trips.json" for 127.0.0.1 at Sat Sep 03 12:37:41 -0400 2011
  Processing by TripsController#create as JSON
  Parameters: {"title"=>"Charlie"}
  AREL (0.5ms)  INSERT INTO "trips" ("created_at", "updated_at", "title") VALUES ('2011-09-03 16:37:41.945743', '2011-09-03 16:37:41.945743', NULL)
Completed 201 Created in 15ms (Views: 3.5ms | ActiveRecord: 0.5ms)

As you can see it's inserting NULL into the title field, I was expecting it to map it on from the JSON data?

Here's the HTTP request:

Host    localhost:3000
User-Agent  Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:6.0.1) Gecko/20100101 Firefox/6.0.1
Accept  */*
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip, deflate
Accept-Charset  ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection  keep-alive
Content-Type    application/json; charset=UTF-8
X-Requested-With    XMLHttpRequest
Referer http://localhost:3000/trips/new
Content-Length  19
Cookie  _tripplanner_session=BAh7ByIQX2NzcmZfdG9rZW4iMWJCVDc0YWNIeHROcmw5VC9ZVEhMdFNlR0dtTWtSVytCL0dwTi9yam1CUUU9Ig9zZXNzaW9uX2lkIiU1NzhlMDAwNmM2N2RkMTE1YTA3M2ZmMzA4NDQ0M2NmOQ%3D%3D--1c2f1fc1d7c1bd147fa1cf9cff47e77c050f51be
Pragma  no-cache
Cache-Control   no-cache

Your problem is that your controller is expecting parameters related to a trip to be in params[:trip] .

Change your json to be

trip: {
  title: 'Charlie'
}

and I think that will fix it for you.

ie your params should look like params => {:trip => {:title => 'Charlie}}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM