Aarthi
Aarthi

Reputation: 1521

Countries gem rails

I am using countries gem to list countries in a dropdown,

<%= form.collection_select(:country, ISO3166::Country.countries.sort_by(&:name), 'name', 'name', {include_blank: 'Select a country'}, class: "select__picker", 'data-style': 'form-control', required: true) %>

Is there any ways to display country name with country emoji at dropdown

Upvotes: 1

Views: 1191

Answers (1)

MrShemek
MrShemek

Reputation: 2483

Yes, there is a way.

<%= f.collection_select(:country, ISO3166::Country.countries.sort_by(&:name).collect { |c| [ c.name, "#{c.name} #{c.emoji_flag}" ] }, :first, :last, {include_blank: 'Select a country'}, class: "select__picker", 'data-style': 'form-control', required: true) %>

collection_select accepts only a method name as a text_method param. The text_method is called on the collection param, which is:

ISO3166::Country.countries.sort_by(&:name).collect { |c| [ c.name, "#{c.name} #{c.emoji_flag}" ] }

So in your case, you are calling :first for the value and :last for the option text on:

[
  ['COUNTRY_1_NAME', 'COUNTRY_1_NAME COUNTRY_1_FLAG'],
  ['COUNTRY_2_NAME', 'COUNTRY_2_NAME COUNTRY_2_FLAG']
  etc.
]

Upvotes: 3

Related Questions