Linking answers in secondary language gives Error 500

Infos:

  • Used Zammad version: 3.3.x
  • Used Zammad installation source: package
  • Operating system: Ubuntu 18.04
  • Browser + version: all

Expected behavior:

  • The “Link Answer” function in the knowledge base should show suggestions for linkable topics

Actual behavior:

  • When language “en-us” is selected, I get an Error 500 instead. In the (default) German language, it works perfectly. Here’s what the error says:

{"error":"No route matches {:action=\u003e\"show\", :answer=\u003e#\u003cKnowledgeBase::Answer::Translation id: 64, title: \"My login doesn't work...\", kb_locale_id: 2, answer_id: 46, content_id: 64, created_by_id: 19, updated_by_id: 19, created_at: \"2020-04-22 15:58:39\", updated_at: \"2020-04-22 16:05:00\"\u003e, :category=\u003enil, :controller=\u003e\"knowledge_base/public/answers\", :locale=\u003e\"en-us\"}, possible unmatched constraints: [:category]"}

Steps to reproduce the behavior:

  • Every time I click on “Link Answer” and start typing

Here’s what’s in the log about this:

E, [2020-04-22T21:54:10.226055 #21452-47119871550080] ERROR -- : No route matches {:action=>"show", :answer=>#, :category=>nil, :controller=>"knowledge_base/public/answers", :locale=>"en-us"}, possible unmatched constraints: [:category] (ActionController::UrlGenerationError) /opt/zammad/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.4.2/lib/action_dispatch/journey/formatter.rb:57:in `generate' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.4.2/lib/action_dispatch/routing/route_set.rb:744:in `generate' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.4.2/lib/action_dispatch/routing/route_set.rb:775:in `generate' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.4.2/lib/action_dispatch/routing/route_set.rb:822:in `url_for' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.4.2/lib/action_dispatch/routing/route_set.rb:273:in `call' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.4.2/lib/action_dispatch/routing/route_set.rb:214:in `call' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.4.2/lib/action_dispatch/routing/route_set.rb:331:in `block (2 levels) in define_url_helper' /opt/zammad/app/controllers/knowledge_base/search_controller.rb:78:in `public_item_details_answer' /opt/zammad/app/controllers/knowledge_base/search_controller.rb:62:in `public_item_details' /opt/zammad/app/controllers/knowledge_base/search_controller.rb:42:in `block in search' /opt/zammad/app/controllers/knowledge_base/search_controller.rb:42:in `map' /opt/zammad/app/controllers/knowledge_base/search_controller.rb:42:in `search' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.4.2/lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.4.2/lib/abstract_controller/base.rb:194:in `process_action' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.4.2/lib/action_controller/metal/rendering.rb:30:in `process_action' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.4.2/lib/abstract_controller/callbacks.rb:42:in `block in process_action' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.4.2/lib/active_support/callbacks.rb:109:in `block in run_callbacks' /opt/zammad/app/controllers/application_controller/has_secure_content_security_policy_for_downloads.rb:18:in `block (4 levels) in ' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.4.2/lib/active_support/notifications.rb:180:in `subscribed' /opt/zammad/app/controllers/application_controller/has_secure_content_security_policy_for_downloads.rb:17:in `block (3 levels) in ' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.4.2/lib/active_support/notifications.rb:180:in `subscribed' /opt/zammad/app/controllers/application_controller/has_secure_content_security_policy_for_downloads.rb:16:in `block (2 levels) in ' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.4.2/lib/active_support/callbacks.rb:118:in `instance_exec' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.4.2/lib/active_support/callbacks.rb:118:in `block in run_callbacks' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.4.2/lib/active_support/callbacks.rb:136:in `run_callbacks' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.4.2/lib/abstract_controller/callbacks.rb:41:in `process_action' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.4.2/lib/action_controller/metal/rescue.rb:22:in `process_action' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.4.2/lib/action_controller/metal/instrumentation.rb:34:in `block in process_action' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.4.2/lib/active_support/notifications.rb:168:in `block in instrument' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.4.2/lib/active_support/notifications/instrumenter.rb:23:in `instrument' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.4.2/lib/active_support/notifications.rb:168:in `instrument' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.4.2/lib/action_controller/metal/instrumentation.rb:32:in `process_action' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.4.2/lib/action_controller/metal/params_wrapper.rb:256:in `process_action' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/activerecord-5.2.4.2/lib/active_record/railties/controller_runtime.rb:24:in `process_action' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.4.2/lib/abstract_controller/base.rb:134:in `process' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/actionview-5.2.4.2/lib/action_view/rendering.rb:32:in `process' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.4.2/lib/action_controller/metal.rb:191:in `dispatch' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.4.2/lib/action_controller/metal.rb:252:in `dispatch' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.4.2/lib/action_dispatch/routing/route_set.rb:52:in `dispatch' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.4.2/lib/action_dispatch/routing/route_set.rb:34:in `serve' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.4.2/lib/action_dispatch/journey/router.rb:52:in `block in serve' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.4.2/lib/action_dispatch/journey/router.rb:35:in `each' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.4.2/lib/action_dispatch/journey/router.rb:35:in `serve' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.4.2/lib/action_dispatch/routing/route_set.rb:840:in `call' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/omniauth-1.9.0/lib/omniauth/strategy.rb:420:in `call_app!' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/omniauth-saml-1.10.1/lib/omniauth/strategies/saml.rb:89:in `other_phase' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/omniauth-1.9.0/lib/omniauth/strategy.rb:190:in `call!' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/omniauth-1.9.0/lib/omniauth/strategy.rb:169:in `call' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/omniauth-1.9.0/lib/omniauth/strategy.rb:192:in `call!' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/omniauth-1.9.0/lib/omniauth/strategy.rb:169:in `call' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/omniauth-1.9.0/lib/omniauth/strategy.rb:192:in `call!' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/omniauth-1.9.0/lib/omniauth/strategy.rb:169:in `call' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/omniauth-1.9.0/lib/omniauth/strategy.rb:192:in `call!' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/omniauth-1.9.0/lib/omniauth/strategy.rb:169:in `call' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/omniauth-1.9.0/lib/omniauth/strategy.rb:192:in `call!' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/omniauth-1.9.0/lib/omniauth/strategy.rb:169:in `call' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/omniauth-1.9.0/lib/omniauth/strategy.rb:192:in `call!' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/omniauth-1.9.0/lib/omniauth/strategy.rb:169:in `call' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/omniauth-1.9.0/lib/omniauth/strategy.rb:192:in `call!' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/omniauth-1.9.0/lib/omniauth/strategy.rb:169:in `call' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/omniauth-1.9.0/lib/omniauth/strategy.rb:192:in `call!' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/omniauth-1.9.0/lib/omniauth/strategy.rb:169:in `call' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/omniauth-1.9.0/lib/omniauth/strategy.rb:192:in `call!' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/omniauth-1.9.0/lib/omniauth/strategy.rb:169:in `call' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/omniauth-1.9.0/lib/omniauth/strategy.rb:192:in `call!' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/omniauth-1.9.0/lib/omniauth/strategy.rb:169:in `call' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/omniauth-1.9.0/lib/omniauth/builder.rb:64:in `call' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/rack-2.2.2/lib/rack/tempfile_reaper.rb:15:in `call' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/rack-2.2.2/lib/rack/etag.rb:27:in `call' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/rack-2.2.2/lib/rack/conditional_get.rb:40:in `call' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/rack-2.2.2/lib/rack/head.rb:12:in `call' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.4.2/lib/action_dispatch/http/content_security_policy.rb:18:in `call' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/rack-2.2.2/lib/rack/session/abstract/id.rb:266:in `context' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/rack-2.2.2/lib/rack/session/abstract/id.rb:260:in `call' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.4.2/lib/action_dispatch/middleware/cookies.rb:670:in `call' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.4.2/lib/action_dispatch/middleware/callbacks.rb:28:in `block in call' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.4.2/lib/active_support/callbacks.rb:98:in `run_callbacks' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.4.2/lib/action_dispatch/middleware/callbacks.rb:26:in `call' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.4.2/lib/action_dispatch/middleware/debug_exceptions.rb:61:in `call' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.4.2/lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/railties-5.2.4.2/lib/rails/rack/logger.rb:38:in `call_app' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/railties-5.2.4.2/lib/rails/rack/logger.rb:26:in `block in call' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.4.2/lib/active_support/tagged_logging.rb:71:in `block in tagged' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.4.2/lib/active_support/tagged_logging.rb:28:in `tagged' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.4.2/lib/active_support/tagged_logging.rb:71:in `tagged' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/railties-5.2.4.2/lib/rails/rack/logger.rb:26:in `call' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.4.2/lib/action_dispatch/middleware/remote_ip.rb:81:in `call' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.4.2/lib/action_dispatch/middleware/request_id.rb:27:in `call' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/rack-2.2.2/lib/rack/method_override.rb:24:in `call' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/rack-2.2.2/lib/rack/runtime.rb:22:in `call' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.4.2/lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.4.2/lib/action_dispatch/middleware/executor.rb:14:in `call' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/actionpack-5.2.4.2/lib/action_dispatch/middleware/static.rb:127:in `call' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/rack-2.2.2/lib/rack/sendfile.rb:110:in `call' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/railties-5.2.4.2/lib/rails/engine.rb:524:in `call' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/puma-3.12.4/lib/puma/configuration.rb:227:in `call' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/puma-3.12.4/lib/puma/server.rb:675:in `handle_request' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/puma-3.12.4/lib/puma/server.rb:476:in `process_client' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/puma-3.12.4/lib/puma/server.rb:334:in `block in run' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/puma-3.12.4/lib/puma/thread_pool.rb:135:in `block in spawn_thread' /opt/zammad/vendor/bundle/ruby/2.5.0/gems/logging-2.2.2/lib/logging/diagnostic_context.rb:474:in `block in create_with_logging_context'

Found the problem myself now! Sorry.
Answer: While I made sure that the category of the article I was editing was translated, not all the other category names had translations. This seems to be a problem when they have sub-articles already. Once I added translations for all categories, the error disappeared.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.