Module: LocalizableRoutes::Extensions::ActionDispatch::NamedRouteCollection

Extended by:
ActiveSupport::Concern
Defined in:
lib/localizable_routes/extensions/action_dispatch/named_route_collection.rb

Instance Method Summary collapse

Instance Method Details

#define_localized_url_helper(name, localization) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/localizable_routes/extensions/action_dispatch/named_route_collection.rb', line 7

def define_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[:locale] || I18n.locale)
        else
          key = (options[strategy] || url_options[strategy])
          locale = localization[:locales][key.to_s]
        end
        send "#{name}_#{locale}_#{type}", *(args << options)
      end
    end
    instance_variable_get("@#{type}_helpers") << helper
  end
end