2

私はsimple_formを使用しています。これは、countryという名前のフィールドを使用するときに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定数を上書きする方法は?または、これを行うためのよりエレガントな方法はありますか?

追伸 Rails3.0.3でRuby1.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 に答える