【问题标题】:rails_admin Enumeration issuerails_admin 枚举问题
【发布时间】:2013-11-13 20:23:50
【问题描述】:

我是 rails_admin gem 的新手。我想让 rails_admin 中的 :style 字段像选项下拉列表一样,而不像普通的输入字段。 这是我的迁移:

    class CreatePhones < ActiveRecord::Migration
      def change
         create_table :phones do |t|
            t.string :audio
            t.string :video
            t.string :style

            t.timestamps
         end
      end
    end

这是我的 Phone.rb 模型:

    class Phone < ActiveRecord::Base
        def style_enum
            ["Free", "Basic", "Advanced", "Super Platinum"] 
        end
    end

我在documentaionthis 手册中阅读了railsadmin 中的枚举和下拉列表,但似乎没有任何效果。

我收到此错误:

感谢您的关注:)

【问题讨论】:

  • 在您的style_enum 方法中尝试[["Free"], ["Basic"], ["Advanced"], ["Super Platinum"]]
  • 您已正确设置所有内容。错误消息是说您的 style_enum 方法中有语法错误。有什么奇怪的事情像一个额外的引号吗?您也可以尝试使用符号而不是字符串,看看是否有什么不同?
  • @vinodadhikary 好的,我试过了,最后得到了同样的错误。
  • @Josh 好的,我尝试了[["a"], ["b"], ["c"], ["d"]] 并得到了同样的错误。我检查了代码中是否有多余的引号两次并将其复制粘贴到这里(所以你可以和我一起检查:))这个错误让我死了)
  • @Josh @vinodadhikary 我应该以某种方式更改/config/initializers/rails_admin.rb 吗?

标签: ruby-on-rails ruby activerecord rails-admin


【解决方案1】:

您可以尝试在您的手机模型中添加此块:

class Phone < ActiveRecord::Base
  rails_admin do
    field :style, :enum do
      enum do
        %w(a b c d)
      end
    end
  end
end

【讨论】:

    【解决方案2】:

    我通常使用https://github.com/brainspec/enumerize 这样做

    class Phone < ActiveRecord::Base
    ...
      extend Enumerize
      enumerize :style, in: ['style1', 'style']
    ...
    

    这将使用这些值创建一个 RA 下拉列表并强制枚举。

    当您有更多动态限制值时,执行field :style, :enum do 很有用。您可以执行bindings[:object] 并查询数据库中的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多