2013-11-13 1 views
0

Я новичок в rails_admin gem. Я хочу сделать поле :style в rails_admin, как выпадающий список параметров, а не как обычные поля ввода. Вот моя миграция:rails_admin Вопрос перечисления

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 

Я читал о перечислении и выпадающих списках в railsadmin в documentaion и в this руководство, но ничего, кажется, Работа.

Я получаю эту ошибку:

Спасибо за внимание :)

+0

Попробуйте '[[" Free "], [" Basic "], [" Advanced "], [" Super Platinum "]]' в вашем методе 'style_enum'. – vee

+0

У вас все правильно настроено. В сообщении об ошибке говорится, что у вас есть синтаксическая ошибка в методе style_enum. Есть ли что-нибудь напуганное, как дополнительный кавычек? Вы также можете попробовать использовать символы вместо строк и посмотреть, не имеет ли это значение? – Josh

+0

@vinodadhikary Хорошо, я пробовал это, в конце получил ту же ошибку. – Phil

ответ

2

Вы можете попробовать добавить этот блок внутри вашей модели телефона:

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

Я обычно делаю это с помощью https://github.com/brainspec/enumerize

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

Это создаст раскрывающийся список RA с этими значениями и принудительное перечисление.

Выполнение field :style, :enum do полезно, если у вас есть более динамически ограниченные значения. Вы можете сделать bindings[:object] и запросить DB для значений.