使用枚举时修改 simple_form 输入中显示的文本
Modify text displayed in simple_form input when using enum
我正在使用 simple_form 来管理我的用户。为了选择用户角色,我使用以下输入::radio_button.
该集合来自用户模型上的枚举。如何修改文本以显示特定内容,例如 "Super Admin" 而不是 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]
您可以对集合使用 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
如果您想做一些比在键上调用方法更复杂的事情,简单形式 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 %>
我正在使用 simple_form 来管理我的用户。为了选择用户角色,我使用以下输入::radio_button.
该集合来自用户模型上的枚举。如何修改文本以显示特定内容,例如 "Super Admin" 而不是 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]
您可以对集合使用 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
如果您想做一些比在键上调用方法更复杂的事情,简单形式 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 %>