2012-03-24 40 views
3

我正在嘗試使用簡單形式的i18n特性,它在大多數情況下工作得很好。簡單形式 - 輸入字段的翻譯選項

我唯一的問題是,在一種情況下,我想使用數字作爲選項值,所以我不能像其他情況下那樣簡單地創建符號。現在,我使用這個解決方案:

f.input :adm, :as => :select, :collection => [[:adm11 ,"11"], 
     [:adm00, "00"], [:adm06, "06"], [:adm99, "99"]] 

我能以某種方式使simple_form查找adm11等通常的方式,這樣我可以保持我的翻譯文件一個合理的結構?

我知道我可以用標準的ruby i18n來做,但我正在尋找更好的方法。

回答

6
f.input :adm, 
    :collection => [[:adm11 ,"11"], [:adm00, "00"], [:adm06, "06"], 
        [:adm99, "99"]], 
    :label_method => lambda { |el| t "define.i18n.keys.here.#{el.first}" } 
+0

的作品,但我仍然希望有一個更漂亮的解決方案... – panmari 2012-03-25 10:38:36

+2

@panmari奇蹟的時代已經過去:) – 2012-03-25 11:02:17

+0

我將使用這種方法,然後 – panmari 2012-03-26 11:39:52

2

我認爲你不能這樣做,因爲這條線在SimpleForm的:

collection_translated = translate_collection if collection_classes == [Symbol] 

因此,這意味着SimpleForm轉換選項,如果它是符號的陣列。見這裏的討論https://github.com/plataformatec/simple_form/pull/302

+0

我怎樣才能讓simple_form翻譯陣列,就像在我的情況? – panmari 2012-03-25 10:36:09

+0

您可以爲您的案例編寫助手,或者只使用Nash Bridges方法。 – 2012-03-25 16:15:03