2

我正在使用simple_form ,它在使用名为 country 的字段时自动使用country_select插件,如下所示:

<%= f.input :country %>

但我希望能够限制显示的国家/地区。

我看到country_select 代码定义了这个

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

所以,我虽然可以像下面这样覆盖 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 常量?还是有更优雅的方式来做到这一点?

附言。我正在使用带有 Rails 3.0.3 的 Ruby 1.8.7p330

4

1 回答 1

4

COUNTRIES执行视图时,插件已经定义了常量。COUNTRIES在初始化程序中定义您的。(见config/initializers:)

编辑:将其放入初始化程序中,例如config/initializers/countries.rb

ActionView::Helpers::FormOptionsHelper::COUNTRIES = ["X", "Y", "Z"]
于 2011-03-05T22:34:06.057 回答