2012-11-04 46 views
4

在我看來,我有:Rails的國際化date_select錯誤

<%= 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

回答

1

據我瞭解rails docsdate_select它想有一個字符串。

如果:start是你的I18n的名字,你應該做<%= f.date_select t(:start) %>據我記得。

+0

從我的記憶中也可以確定。 –

+0

在我的'配置/區域設置/ it.yml'我有'的ActiveRecord: 屬性: 項目: 開始:Inizio 站:Fine' 和使用'噸(:開始)'我得到'未定義的方法的開始'for#' – enricostn

+0

如果使用't(activerecord.attributes.project.start)''我得到'undefined method'Inizio 'for Project' – enricostn

3

我曾經有過類似的問題,如果不是同一個問題。當時我通過以下方式修復它:

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

他有一個表單字段標籤的I18n問題,而不是dateformat的I18n。 – NobbZ

+0

我已經看過蹤跡。如果我真的不認爲它可以解決海報問題,我不會發布。 – vise

+0

謝謝@vise,這應該解決問題,但它不能解釋爲什麼'date_select'失敗。 – enricostn

1

如果在我的情況下,你只用了幾年的時間,不想爲每年的選擇添加每種語言的翻譯,只需一年選擇,您可以添加:locale =>'en'像這樣:

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

這是一個翻譯的問題:你必須:order規則添加到您的it.yml文件或表格使用此行。

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