ActiveAdmin 集合名称
ActiveAdmin Collection Names
我的模型中有一系列角色:
ROLES = ['super_admin', 'user', 'user_admin']
我有一个显示这些角色的 ActiveAdmin 表单:
input :roles, as: :check_boxes, collection: User::ROLES
我必须在表格中将角色显示为人性化的大写名称,而不是蛇形:
Super Admin, Salesman, Sales Admin
但是当其中之一被选中时,它必须保存在snakecase中。
我试过这个:
User::ROLES
.map { |r| "#{r.humanize}" }
.map { |r| r.split.map(&:capitalize).join(' ') }
但这将角色保存为人性化的大写形式,而不是蛇形形式。如何在表格中使用人性化大写版本的单词,但保存蛇形版本?
您可以使用 Rails(主动支持) 方法 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,一种替代方法是:
'super_admin'.split('_').map(&:capitalize).join(' ')
#=> "Super Admin"
所以,映射你的数组:
roles.map { |str| [str.split('_').map(&:capitalize).join(' '), str] }
#=> [["Super Admin", "super_admin"], ["User", "user"], ["User Admin", "user_admin"]]
向后(before_save
):
"Super Admin".downcase.gsub(' ', '_') #=> "super_admin"
我的模型中有一系列角色:
ROLES = ['super_admin', 'user', 'user_admin']
我有一个显示这些角色的 ActiveAdmin 表单:
input :roles, as: :check_boxes, collection: User::ROLES
我必须在表格中将角色显示为人性化的大写名称,而不是蛇形:
Super Admin, Salesman, Sales Admin
但是当其中之一被选中时,它必须保存在snakecase中。
我试过这个:
User::ROLES
.map { |r| "#{r.humanize}" }
.map { |r| r.split.map(&:capitalize).join(' ') }
但这将角色保存为人性化的大写形式,而不是蛇形形式。如何在表格中使用人性化大写版本的单词,但保存蛇形版本?
您可以使用 Rails(主动支持) 方法 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,一种替代方法是:
'super_admin'.split('_').map(&:capitalize).join(' ')
#=> "Super Admin"
所以,映射你的数组:
roles.map { |str| [str.split('_').map(&:capitalize).join(' '), str] }
#=> [["Super Admin", "super_admin"], ["User", "user"], ["User Admin", "user_admin"]]
向后(before_save
):
"Super Admin".downcase.gsub(' ', '_') #=> "super_admin"