Rails:如何在simple_form的下拉菜单中执行i18n

时间:2016-05-21 23:00:52

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

我有一个simple_form,其下拉菜单中包含一系列选项。我希望将选项保存为整数,但是下拉列表中显示的文本是基于区域设置的字符串。如下:

<option value="1">Option 1</option>
<option value="2">Option 2</option>

我目前在MyModel中将选项定义为类方法,如下所示:

def self.options
 [['Option 1', 1], ['Option 2', 2]]
end

没有i18n,我有以下工作:

f.input :dropdown, collection: MyModel::boolean, include_blank: false

添加语言环境,我试过

f.input :dropdown, collection: t(MyModel::boolean, scope: 'simple_form'), include_blank: false

但这会引发错误:

  
    

翻译缺失:en.simple_form.Option 1.1

  

它看起来好像在翻译中查找数组键和值。

有关如何让i18n为该系列工作的任何建议吗?

1 个答案:

答案 0 :(得分:1)

由于simpleform集合接受了procs,你可以在label_method上调用一个块,根据需要格式化你的字符串,这可能是你正在寻找的:

f.input :dropdown, collection: MyModel::boolean, include_blank: false, :label_method => lambda { |item| t(item.last) }