Skip to content

pedrofurtado/rails-countries

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

70 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rails-countries

Integration between Rails and countries gem.

Gem Version Gem license

Installation

Add this line to your application's Gemfile:

gem 'rails-countries'

And then execute:

$ bundle

Or install it yourself as:

$ gem install rails-countries

Usage

ActiveRecord models

class Person < ActiveRecord::Base
  validates :my_attribute, countries_alpha2: true
  # or
  validates_countries_alpha2_of :my_attribute

  validates :another_attribute, countries_alpha3: true
  # or
  validates_countries_alpha3_of :another_attribute
end

Plain Old Ruby Objects

class Person
  include ActiveModel::Model

  validates :my_attribute, countries_alpha2: true
  # or
  validates_countries_alpha2_of :my_attribute

  validates :another_attribute, countries_alpha3: true
  # or
  validates_countries_alpha3_of :another_attribute
end

Views

Helpers

<%= i18n_country_name_by_alpha2('US') %>
<%= i18n_country_name_by_alpha2('US', 'pt-BR') %>

<%= i18n_country_name_by_alpha3('USA') %>
<%= i18n_country_name_by_alpha3('USA', 'pt-BR') %>

Rails Form helpers

<%= select_tag(:my_attribute, countries_alpha2_options) %>
<%= select_tag(:my_attribute, countries_alpha2_options('pt-BR')) %>

<%= select_tag(:another_attribute, countries_alpha3_options) %>
<%= select_tag(:another_attribute, countries_alpha3_options('pt-BR')) %>

SimpleForm

<%= f.input :my_attribute, collection: countries_alpha2_options %>
<%= f.input :my_attribute, collection: countries_alpha2_options('pt-BR') %>

<%= f.input :my_attribute, collection: countries_alpha3_options %>
<%= f.input :my_attribute, collection: countries_alpha3_options('pt-BR') %>

I18n

To customize your error messages you can create a locale file like this:

en:
  errors:
    messages:
      countries_alpha2_invalid: '%{alpha2} is not valid'
      countries_alpha3_invalid: '%{alpha3} is not valid'

Contribute it!

Help us to improve the features and translations of this gem! Your contribution will be welcome 🎉