2017-03-02 16 views
1

の欠落によって引き起こされる未定義のメソッド `マップ」Iはdatetime:stringから4 new.html.erb Railsではdatetimeフィールドのフォーマットを変更し、それは以下のようにエラーの原因:原因レールは:国際化翻訳

undefined method `map' for "translation missing: zh-CN.date.order":String 

ビューコード上記のエラーがある:

<%= f.input :start_time, :label => t("Start Time"), required: true, :as => :datetime, :ampm => true, :minute_step => 10, :start_year => Date.today.year - 1, :end_year => Date.today.year + 1, :format => 'YYYY/MM/DD/HH/MM', :use_month_numbers => true, :include_blank => true %> 

RAILSソースコードが吹くactionview/helpers/date_helper.rbにある:

def translated_date_order 
    date_order = I18n.translate(:'date.order', :locale => @options[:locale], :default => []) 
    date_order = date_order.map { |element| element.to_sym } #<<<<<<===blows up 

    forbidden_elements = date_order - [:year, :month, :day] 
    if forbidden_elements.any? 
    raise StandardError, 
     "#{@options[:locale]}.date.order only accepts :year, :month and :day" 
    end 

    date_order 
end 

私は/config/locale/の下にファイルzh-CN.ymlを持っていますが、それ以外の人には翻訳を提供しています。 zh-CN.yml

UPDATE部:この同じエラーに刺された後

zh-CN: 

    #maint_recordx 
    Mfg Batches : '订单批次一览' 
    New Batch : '新批次' 
    Update Batch : '更新批次' 
    Edit Batch : '更新批次' 
........... 
+0

.ymlの構造を表示できますか?おそらく小さなタイプミスがあります –

+0

ヘルパーメソッドにタイプミスがあります: ': 'date.order''。 ':'を削除すると、文字列でなければなりません。それが修正された場合は、ここでは適用されなくなるので、この質問を削除することをお勧めします。 – mmichael

+0

'mmichael'、ヘルパーメソッドはRailsのソースコードから/ actionview /の下に直接コピーされます。またそれを取り除くことは役に立たなかった。 – user938363

答えて

1

、私はRailsは次のキーを設定することが見出さ:

:'date.order' 

値:

["year", "month", "day"] 
デフォルトの :enロケールの

あなたはデフォルトレール用レールコンソールで次のコードを実行することでこれを確認することができますインストールします。

date_order = I18n.translate(:'date.order', :locale => :en, :default => []) 

お知らせは、私は単にデフォルト

レールはあなたが参照するヘルパー:en値のため@options[:locale]を切り替え、期待しますdate_order値の配列を取得し、取得できない場合は爆発します。

私の場合、I18n :: Backend :: ActiveRecord gemが正しく構成されていないため、I18nによって返される値に干渉しました。おそらく、同様の問題があり、:'date.order'キーの正しい値が返されないことがあります。

EDIT:

この問題を解決するために、あなたはおそらくちょうど宝石 "rails-i18n'をインストールする必要がありますする必要があります。サポートされているロケールの正しい日付形式を返す処理を行います。私の場合、不正な日付形式を返したes.ymlロケールファイルにカスタム設定がありました。

+0

@opotions [:locale] = 'zh-CN'はエラーを引き起こします。しかし、それを修正する方法は?私は設定として:I18n.default_locale = 'zh-CN' Rails.env.production? || Rails.env.development? '/ initializers /'の下のlocal.rbで – user938363