【问题标题】:RailsAdmin enum display existing value of the recordRailsAdmin 枚举显示记录的现有值
【发布时间】:2019-06-21 19:22:12
【问题描述】:

我定义了一个用户模型,其中有一个经典角色

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 个值。完美!

现在,我想动态管理角色列表:我需要限制有关当前登录用户的角色列表。 因此,我像这样使用 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 在法语中)被显示。 我该如何解决这个问题?

感谢您的帮助。

【问题讨论】:

    标签: ruby-on-rails enums devise roles rails-admin


    【解决方案1】:

    感谢 Guillermo,但它没有解决我的问题。 问题是 railsadmin 无法在编辑时选择枚举字段。它与新记录的默认值无关。

    现在,我发现它是 railsadmin gem 的一个未解决问题,并找到此链接: Not selecting enum field on edit #2669 并从 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 !

    【讨论】:

      【解决方案2】:

      你需要定义块default_value

        rails_admin do
          edit do
            field :role do
              default_value do
                :poweruser
              end
            end
          end
        end
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-03
        • 2012-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-07
        • 2020-01-09
        • 2012-08-15
        相关资源
        最近更新 更多