0

なんらかの nil エラーが発生しています。これは を呼び出していることnil'name'示していますが、どこにあるかはわかりません。

ここに私のルートがあります:

# Mobile api
  map.namespace :mobile_api do |api|
    api.resources :updates, :only => [ :index ]
    api.resources :checkouts, :collection => { :reading_progress => :put }
  end

postman を使用して API 呼び出しをデバッグしています。

郵便配達員をRawとして、JSONをPUTURL として送信するデータは次のlocalhost:3000/mobile_api/checkouts/reading_progressとおりです。

{"title":"Awesome post!", "tags": ["blue", "jeans"] }

JSON データを削除し、データなしでリクエストを行うと、コントローラに渡されます。

class MobileApi::CheckoutsController < ApplicationController
  def reading_progress
    binding.pry
  end
end

送信するデータを郵便配達員に追加するとすぐに、次のエラーが発生します。

|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

あなたが助けてくれることを願っています。

4

1 に答える 1

1

ここでエラーが発生しています:

    /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!'

スタック トレースの一番上の行は、エラーを解決しようとするアクティブ サポートNilClassです。

興味深いのは、json を解析するために rexml が呼び出されていることです。リクエスト ヘッダーが JSON 文字列で正しく設定されていない可能性があります。ヘッダーが設定されていることを確認します。

Content-Type: application/json
于 2013-07-15T15:56:24.570 に答える