0

SimpleFormでタイムゾーンフィールドを使用しています。

私の要件は、米国のタイムゾーン+ロンドンを「優先度」の値として上部に表示することです。

それはこのような私の形です:

<%= p.input :time_zone, :label => "Time Zone", :priority => (ActiveSupport::TimeZone.us_zones << ActiveSupport::TimeZone['London'])%>

これは機能しますが、フォームをリロードするたびに「ロンドン」の別のコピーが追加されます。(事前定義された配列に「London」値が追加される理由がわかりますが、これをコントローラーに追加しようとしました:

@priority_time_zones = ActiveSupport::TimeZone.us_zones
@priority_time_zones << ActiveSupport::TimeZone['London']

次に、フォームを次のように変更します。

<%= p.input :time_zone, :label => "Time Zone", :priority => @priority_time_zones %>

しかし、これは(奇妙なことに)それを修正しません。リロードごとに別の「ロンドン」を追加し続ける理由がわかりません。何かご意見は??thnx

4

1 に答える 1

2

@priority_time_zones = ActiveSupport::TimeZone.us_zones.dup を使用して配列を複製する必要があります。それ以外の場合は、元のリストを更新しています

于 2012-07-04T13:15:32.217 に答える