RailsAdmin 枚举显示记录的现有值
RailsAdmin enum display existing value of the record
我定义了一个用户模型,其中有一个经典角色
class User
enum role:[:user, :poweruser, :admin, :superadmin]
我现在使用 RailsAdmin 来管理 rails_admin.rb 文件中的用户字段。
一开始,我是这样直接管理角色属性的:
edit do
field :email do
required true
end
field :password
field :password_confirmation
field :role
...
一切都很好。显示当前值(此处 poweruser),我从 RailsAdmin 自动获得一个组合,其中列出了 4 个值。完美!
现在,我想动态管理角色列表:我需要限制有关 current_user 记录的角色列表。
因此,我像那样使用 RailsAdmin 的 :enum 功能:
field :role, :enum do
required true
enum do
if bindings[:view]._current_user.superadmin?
{user:0, poweruser:1,admin:2,superadmin:3}
elsif bindings[:view]._current_user.admin?
{user:0, poweruser:1,admin:2}
else
{user:0}
end
end
end
这是有效的,根据登录的当前用户角色正确地限制了列表。
但是,我希望角色的初始值应该正确设置,这个值根本不显示:而不是初始值 poweruser,'Search' 单词(Chercher 法语)显示。
我该如何解决这个问题?
感谢您的帮助。
您需要定义区块default_value
rails_admin do
edit do
field :role do
default_value do
:poweruser
end
end
end
end
谢谢 Guillermo,但它没有解决我的问题。
问题是 railsadmin 无法 select 编辑枚举字段。它与新记录的默认值无关。
现在,我发现它是 railsadmin gem 的未解决问题,并找到了这个 link:
Not selecting enum field on edit #2669 and got a workaround from Richard Venneman
我必须更改 文件 app/views/rails_admin/main/_form_enumeration.html.haml 中的代码并通过 :
覆盖现有代码
= form.select field.method_name, field.enum, { include_blank: true }.reverse_merge({ selected: form.object.class.send(field.method_name.to_s.pluralize)[field.form_value] }), field.html_attributes.reverse_merge({ data: { enumeration: true }, placeholder: t('admin.misc.search') })
现在工作正常!所以这个问题对我来说已经关闭,直到 railsadmin 的正式版本!
我定义了一个用户模型,其中有一个经典角色
class User
enum role:[:user, :poweruser, :admin, :superadmin]
我现在使用 RailsAdmin 来管理 rails_admin.rb 文件中的用户字段。 一开始,我是这样直接管理角色属性的:
edit do
field :email do
required true
end
field :password
field :password_confirmation
field :role
...
一切都很好。显示当前值(此处 poweruser),我从 RailsAdmin 自动获得一个组合,其中列出了 4 个值。完美!
现在,我想动态管理角色列表:我需要限制有关 current_user 记录的角色列表。 因此,我像那样使用 RailsAdmin 的 :enum 功能:
field :role, :enum do
required true
enum do
if bindings[:view]._current_user.superadmin?
{user:0, poweruser:1,admin:2,superadmin:3}
elsif bindings[:view]._current_user.admin?
{user:0, poweruser:1,admin:2}
else
{user:0}
end
end
end
这是有效的,根据登录的当前用户角色正确地限制了列表。
但是,我希望角色的初始值应该正确设置,这个值根本不显示:而不是初始值 poweruser,'Search' 单词(Chercher 法语)显示。 我该如何解决这个问题?
感谢您的帮助。
您需要定义区块default_value
rails_admin do
edit do
field :role do
default_value do
:poweruser
end
end
end
end
谢谢 Guillermo,但它没有解决我的问题。 问题是 railsadmin 无法 select 编辑枚举字段。它与新记录的默认值无关。
现在,我发现它是 railsadmin gem 的未解决问题,并找到了这个 link: Not selecting enum field on edit #2669 and got a workaround from Richard Venneman
我必须更改 文件 app/views/rails_admin/main/_form_enumeration.html.haml 中的代码并通过 :
覆盖现有代码= form.select field.method_name, field.enum, { include_blank: true }.reverse_merge({ selected: form.object.class.send(field.method_name.to_s.pluralize)[field.form_value] }), field.html_attributes.reverse_merge({ data: { enumeration: true }, placeholder: t('admin.misc.search') })
现在工作正常!所以这个问题对我来说已经关闭,直到 railsadmin 的正式版本!