Module: ActionView::Helpers::FormOptionsHelper

Defined in:
lib/plugins/country_select/lib/country_select.rb

Constant Summary collapse

COUNTRIES =

All the countries included in the country_options output.

[
  ['Afghanistan', 'AF'],
  ['Aland Islands', 'AX'],
  ['Albania', 'AL'],
  ['Algeria', 'DZ'],
  ['American Samoa', 'AS'],
  ['Andorra', 'AD'],
  ['Angola', 'AO'],
  ['Anguilla', 'AI'],
  ['Antarctica', 'AQ'],
  ['Antigua and Barbuda', 'AG'],
  ['Argentina', 'AR'],
  ['Armenia', 'AM'],
  ['Aruba', 'AW'],
  ['Australia', 'AU'],
  ['Austria', 'AT'],
  ['Azerbaijan', 'AZ'],
  ['Bahamas', 'BS'],
  ['Bahrain', 'BH'],
  ['Bangladesh', 'BD'],
  ['Barbados', 'BB'],
  ['Belarus', 'BY'],
  ['Belgium', 'BE'],
  ['Belize', 'BZ'],
  ['Benin', 'BJ'],
  ['Bermuda', 'BM'],
  ['Bhutan', 'BT'],
  ['Bolivia, Plurinational State of', 'BO'],
  ['Bonaire, Sint Eustatius and Saba', 'BQ'],
  ['Bosnia and Herzegovina', 'BA'],
  ['Botswana', 'BW'],
  ['Bouvet Island', 'BV'],
  ['Brazil', 'BR'],
  ['British Indian Ocean Territory', 'IO'],
  ['Brunei Darussalam', 'BN'],
  ['Bulgaria', 'BG'],
  ['Burkina Faso', 'BF'],
  ['Burundi', 'BI'],
  ['Cambodia', 'KH'],
  ['Cameroon', 'CM'],
  ['Canada', 'CA'],
  ['Cape Verde', 'CV'],
  ['Cayman Islands', 'KY'],
  ['Central African Republic', 'CF'],
  ['Chad', 'TD'],
  ['Chile', 'CL'],
  ['China', 'CN'],
  ['Christmas Island', 'CX'],
  ['Cocos (Keeling) Islands', 'CC'],
  ['Colombia', 'CO'],
  ['Comoros', 'KM'],
  ['Congo', 'CG'],
  ['Congo, the Democratic Republic of the', 'CD'],
  ['Cook Islands', 'CK'],
  ['Costa Rica', 'CR'],
  ['Cote d\'Ivoire', 'CI'],
  ['Croatia', 'HR'],
  ['Cuba', 'CU'],
  ['Curacao', 'CW'],
  ['Cyprus', 'CY'],
  ['Czech Republic', 'CZ'],
  ['Denmark', 'DK'],
  ['Djibouti', 'DJ'],
  ['Dominica', 'DM'],
  ['Dominican Republic', 'DO'],
  ['Ecuador', 'EC'],
  ['Egypt', 'EG'],
  ['El Salvador', 'SV'],
  ['Equatorial Guinea', 'GQ'],
  ['Eritrea', 'ER'],
  ['Estonia', 'EE'],
  ['Ethiopia', 'ET'],
  ['Falkland Islands (Malvinas)', 'FK'],
  ['Faroe Islands', 'FO'],
  ['Fiji', 'FJ'],
  ['Finland', 'FI'],
  ['France', 'FR'],
  ['French Guiana', 'GF'],
  ['French Polynesia', 'PF'],
  ['French Southern Territories', 'TF'],
  ['Gabon', 'GA'],
  ['Gambia', 'GM'],
  ['Georgia', 'GE'],
  ['Germany', 'DE'],
  ['Ghana', 'GH'],
  ['Gibraltar', 'GI'],
  ['Greece', 'GR'],
  ['Greenland', 'GL'],
  ['Grenada', 'GD'],
  ['Guadeloupe', 'GP'],
  ['Guam', 'GU'],
  ['Guatemala', 'GT'],
  ['Guernsey', 'GG'],
  ['Guinea', 'GN'],
  ['Guinea-Bissau', 'GW'],
  ['Guyana', 'GY'],
  ['Haiti', 'HT'],
  ['Heard Island and McDonald Islands', 'HM'],
  ['Holy See (Vatican City State)', 'VA'],
  ['Honduras', 'HN'],
  ['Hong Kong', 'HK'],
  ['Hungary', 'HU'],
  ['Iceland', 'IS'],
  ['India', 'IN'],
  ['Indonesia', 'ID'],
  ['Iran, Islamic Republic of', 'IR'],
  ['Iraq', 'IQ'],
  ['Ireland', 'IE'],
  ['Isle of Man', 'IM'],
  ['Israel', 'IL'],
  ['Italy', 'IT'],
  ['Jamaica', 'JM'],
  ['Japan', 'JP'],
  ['Jersey', 'JE'],
  ['Jordan', 'JO'],
  ['Kazakhstan', 'KZ'],
  ['Kenya', 'KE'],
  ['Kiribati', 'KI'],
  ['Korea, Democratic People\'s Republic of', 'KP'],
  ['Korea, Republic of', 'KR'],
  ['Kosovo', 'XK'],
  ['Kuwait', 'KW'],
  ['Kyrgyzstan', 'KG'],
  ['Lao People\'s Democratic Republic', 'LA'],
  ['Latvia', 'LV'],
  ['Lebanon', 'LB'],
  ['Lesotho', 'LS'],
  ['Liberia', 'LR'],
  ['Libya', 'LY'],
  ['Liechtenstein', 'LI'],
  ['Lithuania', 'LT'],
  ['Luxembourg', 'LU'],
  ['Macao', 'MO'],
  ['Macedonia, The Former Yugoslav Republic of', 'MK'],
  ['Madagascar', 'MG'],
  ['Malawi', 'MW'],
  ['Malaysia', 'MY'],
  ['Maldives', 'MV'],
  ['Mali', 'ML'],
  ['Malta', 'MT'],
  ['Marshall Islands', 'MH'],
  ['Martinique', 'MQ'],
  ['Mauritania', 'MR'],
  ['Mauritius', 'MU'],
  ['Mayotte', 'YT'],
  ['Mexico', 'MX'],
  ['Micronesia, Federated States of', 'FM'],
  ['Moldova, Republic of', 'MD'],
  ['Monaco', 'MC'],
  ['Mongolia', 'MN'],
  ['Montenegro', 'ME'],
  ['Montserrat', 'MS'],
  ['Morocco', 'MA'],
  ['Mozambique', 'MZ'],
  ['Myanmar', 'MM'],
  ['Namibia', 'NA'],
  ['Nauru', 'NR'],
  ['Nepal', 'NP'],
  ['Netherlands', 'NL'],
  ['New Caledonia', 'NC'],
  ['New Zealand', 'NZ'],
  ['Nicaragua', 'NI'],
  ['Niger', 'NE'],
  ['Nigeria', 'NG'],
  ['Niue', 'NU'],
  ['Norfolk Island', 'NF'],
  ['Northern Mariana Islands', 'MP'],
  ['Norway', 'NO'],
  ['Oman', 'OM'],
  ['Pakistan', 'PK'],
  ['Palau', 'PW'],
  ['Palestinian Territory, Occupied', 'PS'],
  ['Panama', 'PA'],
  ['Papua New Guinea', 'PG'],
  ['Paraguay', 'PY'],
  ['Peru', 'PE'],
  ['Philippines', 'PH'],
  ['Pitcairn', 'PN'],
  ['Poland', 'PL'],
  ['Portugal', 'PT'],
  ['Puerto Rico', 'PR'],
  ['Qatar', 'QA'],
  ['Reunion', 'RE'],
  ['Romania', 'RO'],
  ['Russian Federation', 'RU'],
  ['Rwanda', 'RW'],
  ['Saint Barthelemy', 'BL'],
  ['Saint Helena, Ascension and Tristan da Cunha', 'SH'],
  ['Saint Kitts and Nevis', 'KN'],
  ['Saint Lucia', 'LC'],
  ['Saint Martin (French part)', 'MF'],
  ['Saint Pierre and Miquelon', 'PM'],
  ['Saint Vincent and the Grenadines', 'VC'],
  ['Samoa', 'WS'],
  ['San Marino', 'SM'],
  ['Sao Tome and Principe', 'ST'],
  ['Saudi Arabia', 'SA'],
  ['Senegal', 'SN'],
  ['Serbia', 'RS'],
  ['Seychelles', 'SC'],
  ['Sierra Leone', 'SL'],
  ['Singapore', 'SG'],
  ['Sint Maarten (Dutch part)', 'SX'],
  ['Slovakia', 'SK'],
  ['Slovenia', 'SI'],
  ['Solomon Islands', 'SB'],
  ['Somalia', 'SO'],
  ['South Africa', 'ZA'],
  ['South Georgia and the South Sandwich Islands', 'GS'],
  ['South Sudan', 'SS'],
  ['Spain', 'ES'],
  ['Sri Lanka', 'LK'],
  ['Sudan', 'SD'],
  ['Suriname', 'SR'],
  ['Svalbard and Jan Mayen', 'SJ'],
  ['Swaziland', 'SZ'],
  ['Sweden', 'SE'],
  ['Switzerland', 'CH'],
  ['Syrian Arab Republic', 'SY'],
  ['Taiwan, Province of China', 'TW'],
  ['Tajikistan', 'TJ'],
  ['Tanzania, United Republic of', 'TZ'],
  ['Thailand', 'TH'],
  ['Timor-Leste', 'TL'],
  ['Togo', 'TG'],
  ['Tokelau', 'TK'],
  ['Tonga', 'TO'],
  ['Trinidad and Tobago', 'TT'],
  ['Tunisia', 'TN'],
  ['Turkey', 'TR'],
  ['Turkmenistan', 'TM'],
  ['Turks and Caicos Islands', 'TC'],
  ['Tuvalu', 'TV'],
  ['Uganda', 'UG'],
  ['Ukraine', 'UA'],
  ['United Arab Emirates', 'AE'],
  ['United Kingdom', 'GB'],
  ['United States', 'US'],
  ['United States Minor Outlying Islands', 'UM'],
  ['Uruguay', 'UY'],
  ['Uzbekistan', 'UZ'],
  ['Vanuatu', 'VU'],
  ['Venezuela, Bolivarian Republic of', 'VE'],
  ['Viet Nam', 'VN'],
  ['Virgin Islands, British', 'VG'],
  ['Virgin Islands, U.S.', 'VI'],
  ['Wallis and Futuna', 'WF'],
  ['Western Sahara', 'EH'],
  ['Yemen', 'YE'],
  ['Zambia', 'ZM'],
  ['Zimbabwe', 'ZW']
].sort
COUNTRIES_HASH =
{
  :AF => 'Afghanistan',
  :AX => 'Aland Islands',
  :AL => 'Albania',
  :DZ => 'Algeria',
  :AS => 'American Samoa',
  :AD => 'Andorra',
  :AO => 'Angola',
  :AI => 'Anguilla',
  :AQ => 'Antarctica',
  :AG => 'Antigua and Barbuda',
  :AR => 'Argentina',
  :AM => 'Armenia',
  :AW => 'Aruba',
  :AU => 'Australia',
  :AT => 'Austria',
  :AZ => 'Azerbaijan',
  :BS => 'Bahamas',
  :BH => 'Bahrain',
  :BD => 'Bangladesh',
  :BB => 'Barbados',
  :BY => 'Belarus',
  :BE => 'Belgium',
  :BZ => 'Belize',
  :BJ => 'Benin',
  :BM => 'Bermuda',
  :BT => 'Bhutan',
  :BO => 'Bolivia, Plurinational State of',
  :BQ => 'Bonaire, Sint Eustatius and Saba',
  :BA => 'Bosnia and Herzegovina',
  :BW => 'Botswana',
  :BV => 'Bouvet Island',
  :BR => 'Brazil',
  :IO => 'British Indian Ocean Territory',
  :BN => 'Brunei Darussalam',
  :BG => 'Bulgaria',
  :BF => 'Burkina Faso',
  :BI => 'Burundi',
  :KH => 'Cambodia',
  :CM => 'Cameroon',
  :CA => 'Canada',
  :CV => 'Cape Verde',
  :KY => 'Cayman Islands',
  :CF => 'Central African Republic',
  :TD => 'Chad',
  :CL => 'Chile',
  :CN => 'China',
  :CX => 'Christmas Island',
  :CC => 'Cocos (Keeling) Islands',
  :CO => 'Colombia',
  :KM => 'Comoros',
  :CG => 'Congo',
  :CD => 'Congo, the Democratic Republic of the',
  :CK => 'Cook Islands',
  :CR => 'Costa Rica',
  :CI => 'Cote d\'Ivoire',
  :HR => 'Croatia',
  :CU => 'Cuba',
  :CW => 'Curacao',
  :CY => 'Cyprus',
  :CZ => 'Czech Republic',
  :DK => 'Denmark',
  :DJ => 'Djibouti',
  :DM => 'Dominica',
  :DO => 'Dominican Republic',
  :EC => 'Ecuador',
  :EG => 'Egypt',
  :SV => 'El Salvador',
  :GQ => 'Equatorial Guinea',
  :ER => 'Eritrea',
  :EE => 'Estonia',
  :ET => 'Ethiopia',
  :FK => 'Falkland Islands (Malvinas)',
  :FO => 'Faroe Islands',
  :FJ => 'Fiji',
  :FI => 'Finland',
  :FR => 'France',
  :GF => 'French Guiana',
  :PF => 'French Polynesia',
  :TF => 'French Southern Territories',
  :GA => 'Gabon',
  :GM => 'Gambia',
  :GE => 'Georgia',
  :DE => 'Germany',
  :GH => 'Ghana',
  :GI => 'Gibraltar',
  :GR => 'Greece',
  :GL => 'Greenland',
  :GD => 'Grenada',
  :GP => 'Guadeloupe',
  :GU => 'Guam',
  :GT => 'Guatemala',
  :GG => 'Guernsey',
  :GN => 'Guinea',
  :GW => 'Guinea-Bissau',
  :GY => 'Guyana',
  :HT => 'Haiti',
  :HM => 'Heard Island and McDonald Islands',
  :VA => 'Holy See (Vatican City State)',
  :HN => 'Honduras',
  :HK => 'Hong Kong',
  :HU => 'Hungary',
  :IS => 'Iceland',
  :IN => 'India',
  :ID => 'Indonesia',
  :IR => 'Iran, Islamic Republic of',
  :IQ => 'Iraq',
  :IE => 'Ireland',
  :IM => 'Isle of Man',
  :IL => 'Israel',
  :IT => 'Italy',
  :JM => 'Jamaica',
  :JP => 'Japan',
  :JE => 'Jersey',
  :JO => 'Jordan',
  :KZ => 'Kazakhstan',
  :KE => 'Kenya',
  :KI => 'Kiribati',
  :KP => 'Korea, Democratic People\'s Republic of',
  :KR => 'Korea, Republic of',
  :XK => 'Kosovo',
  :KW => 'Kuwait',
  :KG => 'Kyrgyzstan',
  :LA => 'Lao People\'s Democratic Republic',
  :LV => 'Latvia',
  :LB => 'Lebanon',
  :LS => 'Lesotho',
  :LR => 'Liberia',
  :LY => 'Libya',
  :LI => 'Liechtenstein',
  :LT => 'Lithuania',
  :LU => 'Luxembourg',
  :MO => 'Macao',
  :MK => 'Macedonia, The Former Yugoslav Republic of',
  :MG => 'Madagascar',
  :MW => 'Malawi',
  :MY => 'Malaysia',
  :MV => 'Maldives',
  :ML => 'Mali',
  :MT => 'Malta',
  :MH => 'Marshall Islands',
  :MQ => 'Martinique',
  :MR => 'Mauritania',
  :MU => 'Mauritius',
  :YT => 'Mayotte',
  :MX => 'Mexico',
  :FM => 'Micronesia, Federated States of',
  :MD => 'Moldova, Republic of',
  :MC => 'Monaco',
  :MN => 'Mongolia',
  :ME => 'Montenegro',
  :MS => 'Montserrat',
  :MA => 'Morocco',
  :MZ => 'Mozambique',
  :MM => 'Myanmar',
  :NA => 'Namibia',
  :NR => 'Nauru',
  :NP => 'Nepal',
  :NL => 'Netherlands',
  :NC => 'New Caledonia',
  :NZ => 'New Zealand',
  :NI => 'Nicaragua',
  :NE => 'Niger',
  :NG => 'Nigeria',
  :NU => 'Niue',
  :NF => 'Norfolk Island',
  :MP => 'Northern Mariana Islands',
  :NO => 'Norway',
  :OM => 'Oman',
  :PK => 'Pakistan',
  :PW => 'Palau',
  :PS => 'Palestinian Territory, Occupied',
  :PA => 'Panama',
  :PG => 'Papua New Guinea',
  :PY => 'Paraguay',
  :PE => 'Peru',
  :PH => 'Philippines',
  :PN => 'Pitcairn',
  :PL => 'Poland',
  :PT => 'Portugal',
  :PR => 'Puerto Rico',
  :QA => 'Qatar',
  :RE => 'Reunion',
  :RO => 'Romania',
  :RU => 'Russian Federation',
  :RW => 'Rwanda',
  :BL => 'Saint Barthelemy',
  :SH => 'Saint Helena, Ascension and Tristan da Cunha',
  :KN => 'Saint Kitts and Nevis',
  :LC => 'Saint Lucia',
  :MF => 'Saint Martin (French part)',
  :PM => 'Saint Pierre and Miquelon',
  :VC => 'Saint Vincent and the Grenadines',
  :WS => 'Samoa',
  :SM => 'San Marino',
  :ST => 'Sao Tome and Principe',
  :SA => 'Saudi Arabia',
  :SN => 'Senegal',
  :RS => 'Serbia',
  :SC => 'Seychelles',
  :SL => 'Sierra Leone',
  :SG => 'Singapore',
  :SX => 'Sint Maarten (Dutch part)',
  :SK => 'Slovakia',
  :SI => 'Slovenia',
  :SB => 'Solomon Islands',
  :SO => 'Somalia',
  :ZA => 'South Africa',
  :GS => 'South Georgia and the South Sandwich Islands',
  :SS => 'South Sudan',
  :ES => 'Spain',
  :LK => 'Sri Lanka',
  :SD => 'Sudan',
  :SR => 'Suriname',
  :SJ => 'Svalbard and Jan Mayen',
  :SZ => 'Swaziland',
  :SE => 'Sweden',
  :CH => 'Switzerland',
  :SY => 'Syrian Arab Republic',
  :TW => 'Taiwan, Province of China',
  :TJ => 'Tajikistan',
  :TZ => 'Tanzania, United Republic of',
  :TH => 'Thailand',
  :TL => 'Timor-Leste',
  :TG => 'Togo',
  :TK => 'Tokelau',
  :TO => 'Tonga',
  :TT => 'Trinidad and Tobago',
  :TN => 'Tunisia',
  :TR => 'Turkey',
  :TM => 'Turkmenistan',
  :TC => 'Turks and Caicos Islands',
  :TV => 'Tuvalu',
  :UG => 'Uganda',
  :UA => 'Ukraine',
  :AE => 'United Arab Emirates',
  :GB => 'United Kingdom',
  :US => 'United States',
  :UM => 'United States Minor Outlying Islands',
  :UY => 'Uruguay',
  :UZ => 'Uzbekistan',
  :VU => 'Vanuatu',
  :VE => 'Venezuela, Bolivarian Republic of',
  :VN => 'Viet Nam',
  :VG => 'Virgin Islands, British',
  :VI => 'Virgin Islands, U.S.',
  :WF => 'Wallis and Futuna',
  :EH => 'Western Sahara',
  :YE => 'Yemen',
  :ZM => 'Zambia',
  :ZW => 'Zimbabwe',
  :WW => 'Worldwide'
}

Instance Method Summary collapse

Instance Method Details

#country_options_for_select(selected = nil, priority_countries = nil) ⇒ Object

Returns a string of option tags for pretty much any country in the world. Supply a country name as selected to have it marked as the selected option tag. You can also supply an array of countries as priority_countries, so that they will be listed above the rest of the (long) list.

NOTE: Only the option tags are returned, you have to wrap this call in a regular HTML select tag.



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/plugins/country_select/lib/country_select.rb', line 14

def country_options_for_select(selected = nil, priority_countries = nil)
  country_options = ""

  if priority_countries.blank?
    priority_countries = ["United States", "Argentina", "Australia", "Brasil", "Canada", "Finland", "France", "Germany", "Italy", "Japan", "Mexico", "Norway", "Poland", "Portugal", "Spain", "Sweden", "Russia", "United Kingdom"]
  end

  # Add iso code for priority countries 
  priority_countries_iso = COUNTRIES.select{|c| priority_countries.include?(c[0]) }

  # Add iso code for selected countries if not nil
  unless selected.nil?
      selected = COUNTRIES.select{|c| selected.include?(c[1]) }.flatten
  end

  country_options += options_for_select(priority_countries_iso, selected)
  country_options += "<option value=\"\" disabled=\"disabled\">-------------</option>\n"

  other_countries = COUNTRIES.select{|c| !priority_countries.include?(c[0]) }
  return (country_options + options_for_select(other_countries, selected)).html_safe
end

#country_select(object, method, priority_countries = nil, options = {}, html_options = {}) ⇒ Object

Return select and option tags for the given object and method, using country_options_for_select to generate the list of option tags.



6
7
8
# File 'lib/plugins/country_select/lib/country_select.rb', line 6

def country_select(object, method, priority_countries = nil, options = {}, html_options = {})
  InstanceTag.new(object, method, self, options.delete(:object)).to_country_select_tag(priority_countries, options, html_options)
end