Module: Spree::StorefrontCountriesHelper

Included in:
StoreController
Defined in:
app/helpers/spree/storefront_countries_helper.rb

Overview

Rails' include_all_helpers mixes every engine helper into every view, so Spree::Admin::BaseHelper#available_countries (which builds bare Spree::Country.new(iso:) records for admin autocompletes) can shadow Spree::BaseHelper#available_countries in storefront views. Those records have no id or name, which renders the address form country select as empty options.

Spree::StoreController includes this module and exposes it via helper_method, which takes precedence over mixed-in helper modules, so storefront views get the storefront implementation.

Instance Method Summary collapse

Instance Method Details

#available_countriesObject



13
14
15
16
17
18
# File 'app/helpers/spree/storefront_countries_helper.rb', line 13

def available_countries
  @storefront_available_countries ||= current_store.countries_available_for_checkout.map do |country|
    country.name = localized_country_name(country)
    country
  end.sort_by { |country| country.name.parameterize }
end