ruby - ActiveAdmin 集合名称

标签 ruby ruby-on-rails-5 activeadmin

我的模型中有一系列角色:

ROLES = ['super_admin', 'user', 'user_admin']

我有一个 ActiveAdmin 表单,其中显示了这些角色:

input :roles, as: :check_boxes, collection: User::ROLES

我必须在表单上将角色显示为人性化、大写的名称,而不是蛇形名称:

Super Admin, Salesman, Sales Admin

但是当选择其中之一时,它必须保存在蛇形盒中。

我已经尝试过这个:

User::ROLES
.map { |r| "#{r.humanize}" }
.map { |r| r.split.map(&:capitalize).join(' ') }

但这会将角色保存为人性化的大写形式,而不是蛇形形式。如何在表单上使用人性化的大写字母版本,但保存蛇形字母版本?

最佳答案

您可以使用Rails(Active Support)方法String#titleize 而是 split.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]}

关于ruby - ActiveAdmin 集合名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53493029/

相关文章:

ruby-on-rails - 在 Rails 中编写可继承属性与基本赋值

mysql - Rails db:seed 出现 ActiveRecord::RecordInvalid 错误:验证失败:类别必须存在

ruby-on-rails - ApplicationRecord 关联方法查找如何工作?

ruby - 在 Ruby on Rails 中定义 ActiveRecord 方法以处理不同的 ActiveRecord 关系

ruby-on-rails - 将页面添加到事件管理员

ruby-on-rails - 带有提示的 Formtastic radio 合集

ruby-on-rails - Rails 日志中的 "object allocation during garbage collection phase"是什么意思?

mysql - 如何在 OS X 10.5.4 下安装 mysql ruby​​ gem

ruby-on-rails - 如何在 Rails 4 中使用 @font-face 嵌入字体?

ruby-on-rails - Admin::UsersController 中的 ActiveRecord::InvalidForeignKey#destroy