Ruby on rails 如何解决“问题”;无效的查询参数";Rails应用程序中的错误?

Ruby on rails 如何解决“问题”;无效的查询参数";Rails应用程序中的错误?,ruby-on-rails,url,devise,query-parameters,actionpack,Ruby On Rails,Url,Devise,Query Parameters,Actionpack,一个用户最近在注册我们的网站时触发了一个错误 我试图重现这个错误,但没有成功。我知道“é”字有问题。对于这个特定的用户来说,它并没有被识别出来,但对于其他许多用户来说,它已经被识别出来了 从他的用户代理,我知道他在IE11上有这个错误 这是错误的跟踪: An ActionController::BadRequest occurred in registrations#new: Invalid query parameters: Invalid encoding for parameter:

一个用户最近在注册我们的网站时触发了一个错误

我试图重现这个错误,但没有成功。我知道“é”字有问题。对于这个特定的用户来说,它并没有被识别出来,但对于其他许多用户来说,它已经被识别出来了

从他的用户代理,我知道他在IE11上有这个错误

这是错误的跟踪:

An ActionController::BadRequest occurred in registrations#new:

  Invalid query parameters: Invalid encoding for parameter: Martin�



-------------------------------
Request:
-------------------------------

  ERROR: Failed to generate exception summary:

  ActionView::Template::Error: Invalid query parameters: Invalid encoding for parameter: Martin�

  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/action_dispatch/request/utils.rb:36:in `check_param_encoding'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/action_dispatch/request/utils.rb:31:in `block in check_param_encoding'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/action_dispatch/request/utils.rb:31:in `each_value'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/action_dispatch/request/utils.rb:31:in `check_param_encoding'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/action_dispatch/http/request.rb:350:in `block in GET'
  /app/vendor/bundle/ruby/2.4.0/gems/rack-2.0.4/lib/rack/request.rb:57:in `fetch'
  /app/vendor/bundle/ruby/2.4.0/gems/rack-2.0.4/lib/rack/request.rb:57:in `fetch_header'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/action_dispatch/http/request.rb:347:in `GET'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/action_dispatch/http/parameters.rb:53:in `parameters'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/action_dispatch/http/filter_parameters.rb:41:in `filtered_parameters'
  /app/vendor/bundle/ruby/2.4.0/gems/exception_notification-4.3.0/lib/exception_notifier/views/exception_notifier/_request.text.erb:4:in `_vendor_bundle_ruby_______gems_exception_notification_______lib_exception_notifier_views_exception_notifier__request_text_erb__475519309245050229_56429000'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/template.rb:157:in `block in render'
  /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.5/lib/active_support/notifications.rb:168:in `instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/template.rb:352:in `instrument_render_template'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/template.rb:155:in `render'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/renderer/partial_renderer.rb:342:in `block in render_partial'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/renderer/abstract_renderer.rb:42:in `block in instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.5/lib/active_support/notifications.rb:166:in `block in instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.5/lib/active_support/notifications/instrumenter.rb:21:in `instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.5/lib/active_support/notifications.rb:166:in `instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/renderer/abstract_renderer.rb:41:in `instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/renderer/partial_renderer.rb:331:in `render_partial'
  /app/vendor/bundle/ruby/2.4.0/gems/scout_apm-2.4.18/lib/scout_apm/tracer.rb:77:in `block in render_partial_with_scout_instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/scout_apm-2.4.18/lib/scout_apm/tracer.rb:34:in `instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/scout_apm-2.4.18/lib/scout_apm/tracer.rb:73:in `render_partial_with_scout_instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/renderer/partial_renderer.rb:310:in `render'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/renderer/renderer.rb:47:in `render_partial'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/helpers/rendering_helper.rb:35:in `render'
  /app/vendor/bundle/ruby/2.4.0/gems/exception_notification-4.3.0/lib/exception_notifier/views/exception_notifier/exception_notification.text.erb:9:in `block in _vendor_bundle_ruby_______gems_exception_notification_______lib_exception_notifier_views_exception_notifier_exception_notification_text_erb__1927315004961554431_56948680'
  /app/vendor/bundle/ruby/2.4.0/gems/exception_notification-4.3.0/lib/exception_notifier/views/exception_notifier/exception_notification.text.erb:7:in `map'
  /app/vendor/bundle/ruby/2.4.0/gems/exception_notification-4.3.0/lib/exception_notifier/views/exception_notifier/exception_notification.text.erb:7:in `_vendor_bundle_ruby_______gems_exception_notification_______lib_exception_notifier_views_exception_notifier_exception_notification_text_erb__1927315004961554431_56948680'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/template.rb:157:in `block in render'
  /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.5/lib/active_support/notifications.rb:168:in `instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/template.rb:352:in `instrument_render_template'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/template.rb:155:in `render'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/renderer/template_renderer.rb:52:in `block (2 levels) in render_template'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/renderer/abstract_renderer.rb:42:in `block in instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.5/lib/active_support/notifications.rb:166:in `block in instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.5/lib/active_support/notifications/instrumenter.rb:21:in `instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.5/lib/active_support/notifications.rb:166:in `instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/renderer/abstract_renderer.rb:41:in `instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/renderer/template_renderer.rb:51:in `block in render_template'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/renderer/template_renderer.rb:59:in `render_with_layout'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/renderer/template_renderer.rb:50:in `render_template'
  /app/vendor/bundle/ruby/2.4.0/gems/scout_apm-2.4.18/lib/scout_apm/tracer.rb:77:in `block in render_template_with_scout_instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/scout_apm-2.4.18/lib/scout_apm/tracer.rb:34:in `instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/scout_apm-2.4.18/lib/scout_apm/tracer.rb:73:in `render_template_with_scout_instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/renderer/template_renderer.rb:14:in `render'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/renderer/renderer.rb:42:in `render_template'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/renderer/renderer.rb:23:in `render'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/rendering.rb:103:in `_render_template'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/rendering.rb:83:in `render_to_body'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/abstract_controller/rendering.rb:24:in `render'
  /app/vendor/bundle/ruby/2.4.0/gems/actionmailer-5.1.5/lib/action_mailer/base.rb:921:in `block in collect_responses'
  /app/vendor/bundle/ruby/2.4.0/gems/actionmailer-5.1.5/lib/action_mailer/collector.rb:26:in `custom'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/abstract_controller/collector.rb:9:in `text'
  /app/vendor/bundle/ruby/2.4.0/gems/exception_notification-4.3.0/lib/exception_notifier/email_notifier.rb:117:in `block in compose_email'
  /app/vendor/bundle/ruby/2.4.0/gems/actionmailer-5.1.5/lib/action_mailer/base.rb:922:in `collect_responses'
  /app/vendor/bundle/ruby/2.4.0/gems/actionmailer-5.1.5/lib/action_mailer/base.rb:830:in `mail'
  /app/vendor/bundle/ruby/2.4.0/gems/exception_notification-4.3.0/lib/exception_notifier/email_notifier.rb:116:in `compose_email'
  /app/vendor/bundle/ruby/2.4.0/gems/exception_notification-4.3.0/lib/exception_notifier/email_notifier.rb:42:in `exception_notification'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/abstract_controller/base.rb:186:in `process_action'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/abstract_controller/callbacks.rb:20:in `block in process_action'
  /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.5/lib/active_support/callbacks.rb:97:in `run_callbacks'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/abstract_controller/callbacks.rb:19:in `process_action'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/abstract_controller/base.rb:124:in `process'
  /app/vendor/bundle/ruby/2.4.0/gems/actionmailer-5.1.5/lib/action_mailer/rescuable.rb:23:in `block in process'
  /app/vendor/bundle/ruby/2.4.0/gems/actionmailer-5.1.5/lib/action_mailer/rescuable.rb:15:in `handle_exceptions'
  /app/vendor/bundle/ruby/2.4.0/gems/actionmailer-5.1.5/lib/action_mailer/rescuable.rb:22:in `process'
  /app/vendor/bundle/ruby/2.4.0/gems/actionview-5.1.5/lib/action_view/rendering.rb:30:in `process'
  /app/vendor/bundle/ruby/2.4.0/gems/actionmailer-5.1.5/lib/action_mailer/base.rb:609:in `block in process'
  /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.5/lib/active_support/notifications.rb:166:in `block in instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.5/lib/active_support/notifications/instrumenter.rb:21:in `instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.5/lib/active_support/notifications.rb:166:in `instrument'
  /app/vendor/bundle/ruby/2.4.0/gems/actionmailer-5.1.5/lib/action_mailer/base.rb:608:in `process'
  /app/vendor/bundle/ruby/2.4.0/gems/actionmailer-5.1.5/lib/action_mailer/message_delivery.rb:105:in `block in processed_mailer'
  /app/vendor/bundle/ruby/2.4.0/gems/actionmailer-5.1.5/lib/action_mailer/message_delivery.rb:104:in `tap'
  /app/vendor/bundle/ruby/2.4.0/gems/actionmailer-5.1.5/lib/action_mailer/message_delivery.rb:104:in `processed_mailer'
  /app/vendor/bundle/ruby/2.4.0/gems/actionmailer-5.1.5/lib/action_mailer/message_delivery.rb:95:in `deliver_now'
  /app/vendor/bundle/ruby/2.4.0/gems/exception_notification-4.3.0/lib/exception_notifier/email_notifier.rb:172:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/exception_notification-4.3.0/lib/exception_notifier.rb:117:in `fire_notification'
  /app/vendor/bundle/ruby/2.4.0/gems/exception_notification-4.3.0/lib/exception_notifier.rb:58:in `block in notify_exception'
  /app/vendor/bundle/ruby/2.4.0/gems/exception_notification-4.3.0/lib/exception_notifier.rb:57:in `each'
  /app/vendor/bundle/ruby/2.4.0/gems/exception_notification-4.3.0/lib/exception_notifier.rb:57:in `notify_exception'
  /app/vendor/bundle/ruby/2.4.0/gems/exception_notification-4.3.0/lib/exception_notification/rack.rb:51:in `rescue in call'
  /app/vendor/bundle/ruby/2.4.0/gems/exception_notification-4.3.0/lib/exception_notification/rack.rb:40:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/warden-1.2.7/lib/warden/manager.rb:36:in `block in call'
  /app/vendor/bundle/ruby/2.4.0/gems/warden-1.2.7/lib/warden/manager.rb:35:in `catch'
  /app/vendor/bundle/ruby/2.4.0/gems/warden-1.2.7/lib/warden/manager.rb:35:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/rack-2.0.4/lib/rack/etag.rb:25:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/rack-2.0.4/lib/rack/conditional_get.rb:25:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/rack-2.0.4/lib/rack/head.rb:12:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/rack-2.0.4/lib/rack/session/abstract/id.rb:232:in `context'
  /app/vendor/bundle/ruby/2.4.0/gems/rack-2.0.4/lib/rack/session/abstract/id.rb:226:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/action_dispatch/middleware/cookies.rb:613:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/action_dispatch/middleware/callbacks.rb:26:in `block in call'
  /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.5/lib/active_support/callbacks.rb:97:in `run_callbacks'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/action_dispatch/middleware/callbacks.rb:24:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/action_dispatch/middleware/debug_exceptions.rb:59:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/action_dispatch/middleware/show_exceptions.rb:31:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.5/lib/rails/rack/logger.rb:36:in `call_app'
  /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.5/lib/rails/rack/logger.rb:24:in `block in call'
  /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.5/lib/active_support/tagged_logging.rb:69:in `block in tagged'
  /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.5/lib/active_support/tagged_logging.rb:26:in `tagged'
  /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.5/lib/active_support/tagged_logging.rb:69:in `tagged'
  /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.5/lib/rails/rack/logger.rb:24:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/action_dispatch/middleware/remote_ip.rb:79:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/action_dispatch/middleware/request_id.rb:25:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/rack-2.0.4/lib/rack/method_override.rb:22:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/rack-2.0.4/lib/rack/runtime.rb:22:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/activesupport-5.1.5/lib/active_support/cache/strategy/local_cache_middleware.rb:27:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/action_dispatch/middleware/executor.rb:12:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/actionpack-5.1.5/lib/action_dispatch/middleware/static.rb:125:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/rack-2.0.4/lib/rack/sendfile.rb:111:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/scout_apm-2.4.18/lib/scout_apm/instruments/middleware_summary.rb:58:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/railties-5.1.5/lib/rails/engine.rb:522:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/puma-3.11.2/lib/puma/configuration.rb:225:in `call'
  /app/vendor/bundle/ruby/2.4.0/gems/puma-3.11.2/lib/puma/server.rb:624:in `handle_request'
  /app/vendor/bundle/ruby/2.4.0/gems/puma-3.11.2/lib/puma/server.rb:438:in `process_client'
  /app/vendor/bundle/ruby/2.4.0/gems/puma-3.11.2/lib/puma/server.rb:302:in `block in run'
  /app/vendor/bundle/ruby/2.4.0/gems/puma-3.11.2/lib/puma/thread_pool.rb:120:in `block in spawn_thread'
我还可以访问以下两个参数:

* rack.request.query_hash                        :{"name"=>"Martin\xE9"}

* rack.request.query_string                      : &name=Martin_

我想理解为什么这个错误出现在这个特定的用户身上,而不是出现在名字中带有重音的其他用户身上。它可能与浏览器或邮箱相关吗?有没有办法解决这个问题?

可能是因为:你必须在互联网上挖掘这个主题以获取更多信息。您可能可以在提交新记录之前使用
before_action
检查您的参数来解决此问题,但实际上无法提供进一步帮助,因为我以前没有这方面的经验。雪人在编码错误方面也有同样的问题。你能分享一下你的解决方案吗,@benjamin?不幸的是,我在这个问题上一直没有找到解决方案。当我不再为那家公司工作时,我不再面对这个问题。也许你可以试试Maxence说的话,但不确定它是否能解决这个问题@团滩