ruby - ActiveAdmin 集合名称
问题描述
我的模型中有一系列角色:
ROLES = ['super_admin', 'user', 'user_admin']
我有一个显示这些角色的 ActiveAdmin 表单:
input :roles, as: :check_boxes, collection: User::ROLES
我必须在表格上将角色显示为人性化的大写名称而不是蛇形:
Super Admin, Salesman, Sales Admin
but when one of them is selected, it has to be saved in snakecase.
我试过这个:
User::ROLES
.map { |r| "#{r.humanize}" }
.map { |r| r.split.map(&:capitalize).join(' ') }
但这将角色保存为人性化的大写形式,而不是蛇形形式。我如何使用表格上单词的人性化,大写版本,但保存蛇案例版本?
解决方案
您可以改用Rails (Active Support)方法String#titleizesplit.map(&:capitalize).join(' ')
如果您想按照snakecase
以下方式将记录存储在数据库中:在下拉选项中,它将显示为,titalize
但其值将设置为snakecase
将存储在数据库中的值。
> roles.map{|e|[e.titleize, e]}
#=> [["Super Admin", "super_admin"], ["User", "user"], ["User Admin", "user_admin"]]
在 activeadmin 中使用:
input :roles, as: :check_boxes, collection: User::ROLES.map{|e|[e.titleize, e]}
推荐阅读
- python - 如何从 Internet 浏览 Windows Server 2012 r2 上的 IIS 部署的烧瓶休息 api
- matlab - 如何在matlab中制作周期性分段定义的函数?
- javascript - 猫鼬从当前元素向下排序
- mongodb - 根据用户偏好创建通知系统
- java - 在 sts spring boot 中运行 spring 项目的问题
- c# - 从用户在 Discord 上的活动流式传输游戏
- java - 通过 Socket 发送可序列化的类
- jdbc - avro 模式中的时间戳在 Kafka Connect JDBC 中产生不兼容的值验证
- angular - ng build --prod in angular 7 后出现导航错误
- python - 石头剪刀布斯波克蜥蜴蟒与模算法