undefined method `has_content_type?' for nil:NilClass
Asked Answered
B

2

5

I have a controller action that uses some Javascript to load a form on my page. When I submit my form it's not creating a Rails request object and I'm getting the error in my question title.

Here is my form after it loads into the DOM:

<form class="new_alliance" id="new_alliance" action="/alliances" accept-charset="UTF-8" method="post">
  <input name="utf8" type="hidden" value="✓"><input type="hidden" name="authenticity_token" value="4aFNLwGQ5+LubOhZYgTxO+HIMRUpc15JeiWruLMrGWYrurX0Ugk/HLW2I3hMtrrCWzCJVORcNkXbFeJuS61Fxw==">
  <input value="downstream_requested" type="hidden" name="alliance[status]" id="alliance_status">
  <input value="7" type="hidden" name="alliance[upstream_group_id]" id="alliance_upstream_group_id">
  <input value="1" type="hidden" name="alliance[downstream_group_id]" id="alliance_downstream_group_id">
<input type="submit" name="commit" value="Request" data-disable-with="Request">

This is where I get the NoMethodError:

actionpack (5.0.0.1) lib/action_controller/metal/params_wrapper.rb (line 2)

def _wrapper_enabled?
  return false unless request.has_content_type?
  ref = request.content_mime_type.ref
  _wrapper_formats.include?(ref) && _wrapper_key && !request.request_parameters[_wrapper_key]
end

The value of request is nil. When I look at the trace it looks like ActionDispatch is setting my controller and action name correctly. I'm using better_errors, and for my request info it says:

#<ActionDispatch::Request::Session:0x7fa11c000ce8 not yet loaded>

I feel like I've stayed on the path here, so I'm a little confused. Any ideas how I could troubleshoot this?

EDIT: Adding full error trace per request.

Started POST "/alliances" for 127.0.0.1 at 2016-10-20 15:43:37 -0700
NoMethodError - undefined method `has_content_type?' for nil:NilClass:  
actionpack (5.0.0.1) lib/action_controller/metal/params_wrapper.rb:279:in `_wrapper_enabled?'  
actionpack (5.0.0.1) lib/action_controller/metal/params_wrapper.rb:231:in `process_action'  
activerecord (5.0.0.1) lib/active_record/railties/controller_runtime.rb:18:in `process_action'  
actionpack (5.0.0.1) lib/abstract_controller/base.rb:126:in `process'  
actionview (5.0.0.1) lib/action_view/rendering.rb:30:in `process'  
actionpack (5.0.0.1) lib/action_controller/metal.rb:190:in `dispatch'  
actionpack (5.0.0.1) lib/action_controller/metal.rb:262:in `dispatch'  
actionpack (5.0.0.1) lib/action_dispatch/routing/route_set.rb:50:in `dispatch'  
actionpack (5.0.0.1) lib/action_dispatch/routing/route_set.rb:32:in `serve'
actionpack (5.0.0.1) lib/action_dispatch/journey/router.rb:39:in `block in serve'
actionpack (5.0.0.1) lib/action_dispatch/journey/router.rb:26:in `serve'
actionpack (5.0.0.1) lib/action_dispatch/routing/route_set.rb:725:in `call'
bullet (5.4.2) lib/bullet/rack.rb:10:in `call'
warden (1.2.6) lib/warden/manager.rb:35:in `block in call'
warden (1.2.6) lib/warden/manager.rb:34:in `call'
rack (2.0.1) lib/rack/etag.rb:25:in `call'
rack (2.0.1) lib/rack/conditional_get.rb:38:in `call'
rack (2.0.1) lib/rack/head.rb:12:in `call'
rack (2.0.1) lib/rack/session/abstract/id.rb:222:in `context'
rack (2.0.1) lib/rack/session/abstract/id.rb:216:in `call'
actionpack (5.0.0.1) lib/action_dispatch/middleware/cookies.rb:613:in `call'
activerecord (5.0.0.1) lib/active_record/migration.rb:552:in `call'
actionpack (5.0.0.1) lib/action_dispatch/middleware/callbacks.rb:38:in `block in call'
activesupport (5.0.0.1) lib/active_support/callbacks.rb:97:in `__run_callbacks__'
activesupport (5.0.0.1) lib/active_support/callbacks.rb:750:in `_run_call_callbacks'
activesupport (5.0.0.1) lib/active_support/callbacks.rb:90:in `run_callbacks'
actionpack (5.0.0.1) lib/action_dispatch/middleware/callbacks.rb:36:in `call'
actionpack (5.0.0.1) lib/action_dispatch/middleware/executor.rb:12:in `call'
actionpack (5.0.0.1) lib/action_dispatch/middleware/remote_ip.rb:79:in `call'
better_errors (2.1.1) lib/better_errors/middleware.rb:84:in `protected_app_call'
better_errors (2.1.1) lib/better_errors/middleware.rb:79:in `better_errors_call'
better_errors (2.1.1) lib/better_errors/middleware.rb:57:in `call'
actionpack (5.0.0.1) lib/action_dispatch/middleware/debug_exceptions.rb:49:in `call'
web-console (3.1.1) lib/web_console/middleware.rb:131:in `call_app'
web-console (3.1.1) lib/web_console/middleware.rb:28:in `block in call'
web-console (3.1.1) lib/web_console/middleware.rb:18:in `call'
actionpack (5.0.0.1) lib/action_dispatch/middleware/show_exceptions.rb:31:in `call'
railties (5.0.0.1) lib/rails/rack/logger.rb:36:in `call_app'
railties (5.0.0.1) lib/rails/rack/logger.rb:24:in `block in call'
activesupport (5.0.0.1) lib/active_support/tagged_logging.rb:70:in `block in tagged'
activesupport (5.0.0.1) lib/active_support/tagged_logging.rb:26:in `tagged'
activesupport (5.0.0.1) lib/active_support/tagged_logging.rb:70:in `tagged'
railties (5.0.0.1) lib/rails/rack/logger.rb:24:in `call'
actionpack (5.0.0.1) lib/action_dispatch/middleware/request_id.rb:24:in `call'
rack (2.0.1) lib/rack/method_override.rb:22:in `call'
rack (2.0.1) lib/rack/runtime.rb:22:in `call'
activesupport (5.0.0.1) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call'
actionpack (5.0.0.1) lib/action_dispatch/middleware/executor.rb:12:in `call'
actionpack (5.0.0.1) lib/action_dispatch/middleware/static.rb:136:in `call'
rack (2.0.1) lib/rack/sendfile.rb:111:in `call'
railties (5.0.0.1) lib/rails/engine.rb:522:in `call'
rack (2.0.1) lib/rack/handler/webrick.rb:86:in `service'
/Users/ianyoung/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/webrick/httpserver.rb:140:in `service'
/Users/ianyoung/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/webrick/httpserver.rb:96:in `run'
/Users/ianyoung/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/webrick/server.rb:296:in `block in start_thread'
Blunder answered 20/10, 2016 at 22:37 Comment(2)
Show the full error traceDoleful
@chumakoff, updated. Thank you.Blunder
B
21

I had a method named request in my AlliancesController.

Blunder answered 21/10, 2016 at 3:37 Comment(2)
Perfect answer!! Don't ever put a 'request' method in controllers.Brook
Thanks. Even I was facing the same error. There should be no request method in controllerMinima
M
0

It seems like an issue which occurs a lot when you forget to restart your server. Try exiting your server and restarting it again, and see what happens.

Muldoon answered 20/10, 2016 at 22:40 Comment(1)
I restarted the server and there's no change.Blunder

© 2022 - 2024 — McMap. All rights reserved.