在我看来,我有:
<%= 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
答案 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]) %>