我将RAILS 4 datetime
中new.html.erb
字段的格式从:string
更改为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
我在zh-CN.yml
下有一个文件/config/locale/
,它为除此之外的其他人提供翻译。
zh-CN.yml
的更新部分:
zh-CN:
#maint_recordx
Mfg Batches : '订单批次一览'
New Batch : '新批次'
Update Batch : '更新批次'
Edit Batch : '更新批次'
...........
答案 0 :(得分:3)
在被同样的错误咬了之后,我发现Rails设置了以下键:
:'date.order'
到值:
["year", "month", "day"]
表示默认的:en
区域设置
您可以通过在rails控制台中运行以下代码段来确认默认的rails install:
date_order = I18n.translate(:'date.order', :locale => :en, :default => [])
注意我刚刚将@options[:locale]
切换为默认:en
值
你引用的rails helper,需要一个数组作为date_order值,如果没有得到的话会爆炸。
在我的情况下,我不正确地配置了I18n :: Backend :: ActiveRecord gem,因此它干扰了I18n返回的值。您可能有类似的问题阻止了返回:'date.order'
密钥的正确值。
编辑:
为了解决这个问题,您可能只需要安装gem&#39; rails-i18n'
。它将处理为支持的语言环境返回正确的日期格式。在我的情况下,我的es.yml语言环境文件中有一个自定义配置,返回了错误的日期格式。
答案 1 :(得分:0)
宾果!!!您只需将缺少的关键翻译添加到本地翻译中。 我通过添加
解决了en:
date:
order: ["day", "month", "year"]
到
config/locales/en.yml