使用枚举时修改simple_form输入中显示的文本

时间:2015-09-21 19:09:32

标签: ruby-on-rails forms enums simple-form

我正在使用simple_form来管理我的用户。为了选择用户角色,我使用输入:: radio_button。

该集合来自用户模型的枚举。如何修改文本以显示特定的内容,如“超级管理员”而不是super_admin?

_form.html.slim

= form.input :role, collection: User.roles, as: :radio_buttons, item_wrapper_class: 'btn btn-default', checked: User.roles[user.role], required: true

user.rb

  enum role: [:super_admin, :admin, :generic]

2 个答案:

答案 0 :(得分:4)

您可以将label_method选项与集合

一起使用
= form.input :role, collection: User.roles, label_method: lambda {|k| k.humanize}, as: :radio_buttons, item_wrapper_class: 'btn btn-default', checked: User.roles[user.role], required: true

答案 1 :(得分:0)

如果你想做一些比调用密钥方法更复杂的东西,简单表格has support用于翻译I18n的集合选项 - 你只需要提供一个符号数组,以便查找工作

以下是SimpleForm 3.5.0上对我有用的内容:

区域设置文件:

en:
  simple_form:
    options:
      user:
        role:
          super_admin: 'Super Admin'
          admin: 'Admin'
          generic: 'Regular Joe'

查看:

<%= f.input :role, collection: User.roles.symbolize_keys.keys %>