rails-i18n date_select错误

时间:2012-11-04 14:03:06

标签: ruby-on-rails ruby-on-rails-3.2 rails-i18n

在我看来,我有:

<%= f.date_select :start %>

我收到错误消息:can't convert Symbol into String

我知道它与it.date.order规则有关,但我看到rails-i18n包含它: https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/it.yml#L51

这里有什么问题?

完整回溯:https://gist.github.com/4007557

编辑:在控制台中运行I18n.t 'date.order'会给我=> [:day, :month, :year]。这是正确的......为什么date_select不起作用?

在GitHub上的问题:https://github.com/svenfuchs/rails-i18n/issues/273

5 个答案:

答案 0 :(得分:3)

我过去曾有过类似的问题。当时我使用以下方法修复它:

date:
  order: [ !ruby/symbol day, !ruby/symbol month, !ruby/symbol year ]

答案 1 :(得分:1)

据我所知,rails docs关于date_select它想要一个字符串。

如果:start是您的I18n的名称,那么您应该记住<%= f.date_select t(:start) %>

答案 2 :(得分:1)

你不必触摸你的形式:这是一个翻译问题。你应该在你的it.yml文件中添加你会在这里找到的行:https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale

答案 3 :(得分:1)

如果在我的情况下,您只使用多年而且不想为i18n添加每种语言的翻译仅一年选择,您可以添加:locale =&gt; 'en'就像这样的日期:

<%= f.date_select :start, :start_year => 1940, :end_year => Date.today.year, :discard_day => true, :discard_month => true, :locale => 'en' %>

答案 4 :(得分:1)

这是一个翻译问题:您必须将:order规则添加到it.yml文件中,或在表单中使用此行。

<%= f.date_select(:start, :order => [:day, :month, :year]) %>