Sha256: 159f4a7e0dd0dd1d25810f5c330795e4cf52da75b0835f8d0adb6835cdec88f0

Contents?: true

Size: 1.29 KB

Versions: 1

Compression:

Stored size: 1.29 KB

Contents

module LocalizableRoutes
  module Extensions
    module ActionDispatch
      module NamedRouteCollection
        extend ActiveSupport::Concern

        def add_localized_url_helper(name, localization)
          %w(path url).each do |type|
            helper = :"#{name}_#{type}"
            target = instance_variable_get("@#{type}_helpers_module")
            target.remove_possible_method helper
            target.module_eval do
              define_method helper do |*args|
                options = args.extract_options!
                strategy = localization[:strategy]
                if strategy == :param
                  locale = (
                    options[:locale] ||
                    url_options.try(:fetch, :locale, nil) ||
                    I18n.locale
                  )
                else
                  key = (
                    options[strategy] ||
                    url_options.try(:fetch, strategy, nil) ||
                    try(:request).try(strategy)
                  )
                  locale = localization[:locales][key.to_s]
                end
                send "#{name}_#{locale}_#{type}", *(args << options)
              end
            end
            instance_variable_get("@#{type}_helpers") << helper
          end
        end

      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
localizable_routes-5.1.1 lib/localizable_routes/extensions/action_dispatch/named_route_collection.rb