4

在我看来,我有:

<%= 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 repo 上的问题:https ://github.com/svenfuchs/rails-i18n/issues/273

4

5 回答 5

4

我过去有类似的问题,如果不是相同的问题。当时我使用以下方法修复了它:

date:
  order: [ !ruby/symbol day, !ruby/symbol month, !ruby/symbol year ]
于 2012-11-04T15:51:20.657 回答
1

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

<%= f.date_select(:start, :order => [:day, :month, :year]) %>
于 2014-06-25T08:21:03.293 回答
1

据我了解有关它的rails 文档date_select想要一个字符串。

如果:start是你的 I18n 的名字,你应该<%= f.date_select t(:start) %>按照我的记忆去做。

于 2012-11-04T15:11:47.463 回答
1

您不必触摸表格:这是一个翻译问题。您应该在 it.yml 文件中添加您将在此处找到的行:https ://github.com/svenfuchs/rails-i18n/blob/master/rails/locale 。

于 2013-03-19T10:06:04.420 回答
1

如果像我的情况一样,您只使用年份并且不想为 i18n 的每种语言添加翻译只是为了选择年份,您可以添加:locale => 'en'仅针对该日期,如下所示:

<%= f.date_select :start, :start_year => 1940, :end_year => Date.today.year, :discard_day => true, :discard_month => true, :locale => 'en' %>
于 2013-09-30T19:04:08.067 回答