Module: Decidim::ActiveLinkToHelper

Included in:
OnboardingActionMessageCell, ProfileCell
Defined in:
app/helpers/decidim/active_link_to_helper.rb

Overview

Overrides ActiveLinkTo#is_active_link? to handle locale-prefixed URLs.

Decidim adds the locale as a URL path segment (e.g. ‘/en/processes`), so the URL passed to the helper and `request.original_fullpath` both carry a locale prefix. This module normalizes the URL argument to always carry the current locale prefix before delegating to the gem, so active-state detection works correctly regardless of whether the caller already included the locale in the URL or not.

When the locale is part of the Rails script name rather than the path (i.e. the application is mounted at a locale-prefixed mount point), no normalization is performed and the original gem behaviour is preserved.

Include this module after ActiveLinkTo so that this override takes precedence.

Instance Method Summary collapse

Instance Method Details

#is_active_link?(url, condition = nil) ⇒ Boolean

Overrides ActiveLinkTo#is_active_link? to normalise locale-prefixed URLs before comparison.

Parameters:

  • url (String)

    the URL to check

  • condition (Boolean, Symbol, Regexp, Array, Hash, nil) (defaults to: nil)

    the active condition, same as accepted by the ‘active_link_to` gem

Returns:

  • (Boolean)

    whether the link is considered active



28
29
30
# File 'app/helpers/decidim/active_link_to_helper.rb', line 28

def is_active_link?(url, condition = nil) # rubocop:disable Naming/PredicatePrefix
  super(locale_prefixed_url(url), condition)
end