简单表单 - 翻译输入字段的选项

时间:2012-03-24 09:40:48

标签: ruby-on-rails internationalization simple-form

我正在尝试使用简单形式的i18n功能,这在大多数情况下都很有效。

我唯一的问题是,在一种情况下我想使用数字作为选项值,所以我不能像其他情况那样简单地创建一个符号。现在,我正在使用这个解决方案:

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

我能以某种方式让simple_form以通常的方式查找adm11等等,所以我可以在翻译文件中保留一个合理的结构吗?

我知道我可以用标准的ruby i18n来做,但我正在寻找更好的方法。

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:2)

我认为你不能这样做是因为SimpleForm中的这一行:

collection_translated = translate_collection if collection_classes == [Symbol]

因此,这意味着SimpleForm会转换选项,如果它是符号数组。请参阅此处的讨论https://github.com/plataformatec/simple_form/pull/302