Reputation: 10631
I'm getting some kind of nil error; this tells me it's calling nil
on 'name'
, but it does not show me where.
Here are my routes:
# Mobile api
map.namespace :mobile_api do |api|
api.resources :updates, :only => [ :index ]
api.resources :checkouts, :collection => { :reading_progress => :put }
end
I am using postman to debug the api call.
Here is the data I send with postman as Raw, JSON as a PUT
to the url
localhost:3000/mobile_api/checkouts/reading_progress
:
{"title":"Awesome post!", "tags": ["blue", "jeans"] }
When I remove the JSON data and make the request with no data it goes through to the controller.
class MobileApi::CheckoutsController < ApplicationController
def reading_progress
binding.pry
end
end
As soon as I add any data to postman to send, I get this error:
|ruby-1.8.7-p371| ubuntu-francois in ~/sites/mds
± |old-state ✗| → ./script/server
=> Booting Mongrel
=> Rails 2.3.17 application starting on http://0.0.0.0:3000
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/rubyzip2-2.0.2/lib/zip/version.rb:2: warning: already initialized constant VERSION
=> Call with -d to detach
=> Ctrl-C to shutdown server
SQL (0.1ms) SET NAMES 'utf8'
SQL (0.1ms) SET SQL_AUTO_IS_NULL=0
Error occurred while parsing request parameters.
Contents:
{"title":"Awesome post!", "tags": ["blue", "jeans"] }
/!\ FAILSAFE /!\ Mon Jul 15 17:26:37 +0200 2013
Status: 500 Internal Server Error
undefined method `name' for nil:NilClass
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/activesupport-2.3.17/lib/active_support/whiny_nil.rb:52:in `method_missing'
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/activesupport-2.3.17/lib/active_support/xml_mini/rexml.rb:29:in `merge_element!'
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/activesupport-2.3.17/lib/active_support/xml_mini/rexml.rb:18:in `parse'
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/activesupport-2.3.17/lib/active_support/xml_mini.rb:12:in `__send__'
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/activesupport-2.3.17/lib/active_support/xml_mini.rb:12:in `parse'
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/activesupport-2.3.17/lib/active_support/core_ext/hash/conversions.rb:171:in `from_xml'
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/actionpack-2.3.17/lib/action_controller/params_parser.rb:34:in `parse_formatted_parameters'
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/actionpack-2.3.17/lib/action_controller/params_parser.rb:11:in `call'
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/actionpack-2.3.17/lib/action_controller/session/abstract_store.rb:177:in `call'
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/activerecord-2.3.17/lib/active_record/query_cache.rb:29:in `call'
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/activerecord-2.3.17/lib/active_record/connection_adapters/abstract/query_cache.rb:34:in `cache'
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/activerecord-2.3.17/lib/active_record/query_cache.rb:9:in `cache'
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/activerecord-2.3.17/lib/active_record/query_cache.rb:28:in `call'
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/activerecord-2.3.17/lib/active_record/connection_adapters/abstract/connection_pool.rb:361:in `call'
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/actionpack-2.3.17/lib/action_controller/failsafe.rb:26:in `call'
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/rack-1.1.6/lib/rack/lock.rb:11:in `call'
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/rack-1.1.6/lib/rack/lock.rb:11:in `synchronize'
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/rack-1.1.6/lib/rack/lock.rb:11:in `call'
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/actionpack-2.3.17/lib/action_controller/dispatcher.rb:114:in `call'
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/actionpack-2.3.17/lib/action_controller/reloader.rb:34:in `run'
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/actionpack-2.3.17/lib/action_controller/dispatcher.rb:108:in `call'
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/rails-2.3.17/lib/rails/rack/static.rb:31:in `call'
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/rack-1.1.6/lib/rack/urlmap.rb:47:in `call'
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/rack-1.1.6/lib/rack/urlmap.rb:41:in `each'
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/rack-1.1.6/lib/rack/urlmap.rb:41:in `call'
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/rails-2.3.17/lib/rails/rack/log_tailer.rb:17:in `call'
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/rack-1.1.6/lib/rack/content_length.rb:13:in `call'
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/rack-1.1.6/lib/rack/chunked.rb:15:in `call'
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/rack-1.1.6/lib/rack/handler/mongrel.rb:67:in `process'
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/mongrel-1.1.5/lib/mongrel.rb:159:in `process_client'
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/mongrel-1.1.5/lib/mongrel.rb:158:in `each'
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/mongrel-1.1.5/lib/mongrel.rb:158:in `process_client'
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/mongrel-1.1.5/lib/mongrel.rb:285:in `run'
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/mongrel-1.1.5/lib/mongrel.rb:285:in `initialize'
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/mongrel-1.1.5/lib/mongrel.rb:285:in `new'
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/mongrel-1.1.5/lib/mongrel.rb:285:in `run'
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/mongrel-1.1.5/lib/mongrel.rb:268:in `initialize'
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/mongrel-1.1.5/lib/mongrel.rb:268:in `new'
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/mongrel-1.1.5/lib/mongrel.rb:268:in `run'
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/rack-1.1.6/lib/rack/handler/mongrel.rb:38:in `run'
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/rails-2.3.17/lib/commands/server.rb:111
./script/server:3:in `require'
./script/server:3
Hope you can help out.
Upvotes: 0
Views: 1125
Reputation: 11949
The error is occurring here:
/home/francois/.rvm/gems/ruby-1.8.7-p371/gems/activesupport-2.3.17/lib/active_support/xml_mini/rexml.rb:29:in `merge_element!'
The top line of the stack trace is active support trying to help with NilClass
errors.
What's interesting is that rexml is being invoked to parse json. It's possible that the request headers aren't set correctly with your JSON string. Ensure that the header is set:
Content-Type: application/json
Upvotes: 1