未定义的方法' has_content_type?'为零:NilClass

undefined method `has_content_type?' for nil:NilClass

本文关键字:NilClass 为零 type has 方法 未定义 content      更新时间:2023-09-26

我有一个控制器动作,它使用一些Javascript在我的页面上加载表单。当我提交我的表单,它没有创建一个Rails请求对象,我得到错误在我的问题标题。

这是我的表单加载到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">

这就是我得到NoMethodError的地方:

actionpack (5.0.0.1) lib/action_controller/metal/params_wrapper。b (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

request的值为nil。当我查看跟踪时,它看起来像是ActionDispatch正确设置了我的控制器和动作名称。我使用better_errors,对于我的请求信息,它说:

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

我觉得我一直在这条路上,所以我有点困惑。有什么办法可以解决这个问题吗?

编辑:每个请求添加完整的错误跟踪。

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'

我有一个名为request的方法在我的AlliancesController

这似乎是一个经常发生的问题,当你忘记重启你的服务器。尝试退出服务器并重新启动,看看会发生什么。