2014-02-22 49 views
5

我正在使用Enumerize寶石https://github.com/brainspec/enumerize/ 它允許我在形式上使用美麗的選擇與siple形式。此選項中的所有選項均已翻譯。i18n使用Enumerize寶石

en: 
    enumerize: 
    user: 
     sex: 
     male: 'Man' 
     female: 'Woman' 

因此,在我的表單中,我選擇了變體'Man'和'Woman'。當我用'男人'值保存記錄時,我得到'男性'值的性別屬性。現在我想顯示該值作爲展示頁上的「人」,但

= @user.sex 

輸出爲「男性」,而不是「人」

+0

對不起,我不明白你的問題。 – phoet

+0

@phoet看更新問題 – Berlin

回答

10

我可能會使用.text方法(你可以通過使用bundle open enumerize並且遍歷代碼來看到它在Gem中)

= @user.sex.text 

您還可以使用完整的翻譯鍵

= t("activerecord.enumerize.user.sex.#{@user.sex}") 
+1

謝謝!那是我想要的 – Berlin

2

如果你把可選值在YAML文件中,像

simple_form: 
    options: 
    user: 
     gender: 
     male: Male 
     female: Female 

簡單的形式將爲您挑選它們。無需在您的視圖中進行任何明確的翻譯

有關更多信息,請參見https://github.com/plataformatec/simple_form#i18n

有「自動化」同級別中的其他意見,你可以創建一個簡單的輔助方法,做翻譯爲您

def translate(record, attr) 
    model = record.class.name.underscore 
    value = record.send(attr) 
    I18n.t("simple_form.options.#{model}.#{attr}.#{value}") 
end 

,你可以調用作爲

= translate(@user, :sex) 
+0

是的,這是在形式。但我想在我的展示頁面上打印「男性」或「女性」,而不是表格 – Berlin

+0

我已更新問題 – Berlin

+0

我已將一些幫助代碼添加到我的答案 – Danny