扶手:引起缺失的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 : '更新批次'
...........
通过此相同的错误被叮咬后,我发现,滑轨设置以下项:
:'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语言环境文件中有一个自定义配置,它返回了不正确的日期格式。
@opotions [:locale] ='zh-CN'导致错误。但如何解决它?我的配置如下:I18n.default_locale ='zh-CN'如果Rails.env.production? || Rails.env.development?在'/ initializers /'下的local.rb中 – user938363
你可以显示一个.yml结构吗?可能是一个小的错字 –
你的助手方法有一个错字:':'date.order''。删除':',它应该只是一个字符串。如果解决了这个问题,我建议你删除这个问题,因为这里不再适用。 – mmichael
'mmichael',帮助器方法直接从/ actionview /下的Rails源代码复制。还删除它并没有帮助。 – user938363