扶手:引起缺失的I18n翻译

问题描述:

未定义的方法`地图”我改变了格式为datetime字段在Rails从到datetime和它引起的误差,如下:扶手:引起缺失的I18n翻译

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 

我确实有一个文件zh-CN.yml/config/locale/下,它为其他人提供翻译,除了这一个。的zh-CN.yml

UPDATE部分:

zh-CN: 

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

你可以显示一个.yml结构吗?可能是一个小的错字 –

+0

你的助手方法有一个错字:':'date.order''。删除':',它应该只是一个字符串。如果解决了这个问题,我建议你删除这个问题,因为这里不再适用。 – mmichael

+0

'mmichael',帮助器方法直接从/ actionview /下的Rails源代码复制。还删除它并没有帮助。 – user938363

通过此相同的错误被叮咬后,我发现,滑轨设置以下项:

:'date.order' 

为值:

["year", "month", "day"] 

默认:en区域设置

您可以通过运行轨道控制台下面的代码段用于默认轨确认此安装:

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

通知我刚换@options[:locale]默认:en

轨道帮手您参考,希望的数组的date_order值,并且如果它没有得到,它将炸毁。

在我的情况下,我错误地配置了I18n :: Backend :: ActiveRecord gem,因此它干扰了I18n返回的值。您可能有类似的问题,阻止返回:'date.order'密钥的正确值。

编辑:

为了解决这个问题,你应该只需要安装宝石“rails-i18n'。它将处理返回支持的语言环境的正确日期格式。在我的情况下,我在我的es.yml语言环境文件中有一个自定义配置,它返回了不正确的日期格式。

+0

@opotions [:locale] ='zh-CN'导致错误。但如何解决它?我的配置如下:I18n.default_locale ='zh-CN'如果Rails.env.production? || Rails.env.development?在'/ initializers /'下的local.rb中 – user938363