diff --git a/app/helpers/knowledge_base_helper.rb b/app/helpers/knowledge_base_helper.rb index 47030916b..7fbf53c1f 100644 --- a/app/helpers/knowledge_base_helper.rb +++ b/app/helpers/knowledge_base_helper.rb @@ -203,8 +203,8 @@ module KnowledgeBaseHelper case node['data-target-type'] when 'knowledge-base-answer' if (translation = KnowledgeBase::Answer::Translation.find_by(id: node['data-target-id'])) - path = help_answer_path(translation.answer.category.translation, - translation.answer.translation, + path = help_answer_path(translation.answer.category.translation_preferred(translation.kb_locale), + translation, locale: translation.kb_locale.system_locale.locale) node['href'] = custom_path_if_needed path diff --git a/app/models/concerns/has_translations.rb b/app/models/concerns/has_translations.rb index f3beb51bf..c61f9a17a 100644 --- a/app/models/concerns/has_translations.rb +++ b/app/models/concerns/has_translations.rb @@ -32,6 +32,14 @@ module HasTranslations translations.find_by(kb_locale_id: kb_locale_or_id) end + def translation_preferred(kb_locale_or_id) + translation_to(kb_locale_or_id) || translation_primary || translations.first + end + + def translation_primary + translations.joins(:kb_locale).find_by(knowledge_base_locales: { primary: true }) + end + class_methods do def translation_class_name "#{name}::Translation"