Как ограничить названия стран в плагине `country_select`?

Я использую simple_form, который автоматически использует country_select при использовании поля с названием страны, например:

<%= f.input :country %>

Но я хочу иметь возможность ограничивать отображаемые страны.

Я видел, что код country_select определяет это:

COUNTRIES = ["Afghanistan"
  ...
"Yemen", "Zambia", "Zimbabwe"] unless const_defined?("COUNTRIES")

Итак, я мог бы переопределить СТРАНЫ, как показано ниже:

<% COUNTRIES = ["Canada","USA"] %>
<p><%= f.input :country %></p>

Но я получаю сообщение об ошибке:

compile error
/home/jack/src/beta/app/views/contacts/_address_fields.html.erb:6: dynamic constant assignment
');  COUNTRIES = ["Canada","USA"] 
      ^

Как перезаписать константу COUNTRIES? Или есть более элегантный способ сделать это?

Ps. Я использую Ruby 1.8.7p330 с Rails 3.0.3.


person Zabba    schedule 05.03.2011    source источник
comment
Я предполагаю, что это загружается в начале приложения Rails. Вы пытались установить COUNTRIES в инициализаторе?   -  person apneadiving    schedule 06.03.2011
comment
К сведению, я обычно использую github.com/jim/carmen   -  person apneadiving    schedule 06.03.2011


Ответы (1)


Константа COUNTRIES уже определена плагином к моменту выполнения вашего представления. Определите свой COUNTRIES в инициализаторе. (См.: config/initializers)

Изменить: поместите это в инициализатор, например config/initializers/countries.rb:

ActionView::Helpers::FormOptionsHelper::COUNTRIES = ["X", "Y", "Z"]
person jdl    schedule 05.03.2011
comment
Я сделал, как было предложено, но весь список все еще отображается! - person Zabba; 06.03.2011
comment
Смотрите мое редактирование и обратите внимание на напоминание apneadiving о перезапуске сервера. - person jdl; 06.03.2011
comment
Проблема заключалась в том, что я не устанавливал константу, используя пространство имен. Спасибо! - person Zabba; 06.03.2011
comment
Помещение константы в инициализатор работает, но при запуске сервера я получаю предупреждение: warning: already initialized constant COUNTRIES - person dkobozev; 29.05.2012