Как настроить rails_admin для изменения поля ввода целого числа в поле выбора?

Я использую rails_admin с devise. У меня есть простая модель User (с типичными атрибутами devise), а также дополнительный атрибут типа integer, называемый role_type. Когда я просматриваю http://0.0.0.0:5000/admin/user/1/edit в браузере, я вижу десять атрибутов devise плюс мой Role type (хотя это поле type="number" input), тогда как я хочу, чтобы это было раскрывающееся меню select. Я немного поискал и добавил конфигурацию в rails_admin.rb, а также соответствующий фрагмент, и хотя я получил раскрывающийся список, который мне нужен, это единственное, что я получаю для всего пользовательского представления редактирования .

Я хочу настроить способ, которым rails_admin отображает поле :role_type, и (очевидно) также иметь возможность редактировать остальные поля User.

db/migrate/20131119000715_add_role_type_to_user.rb

class AddRoleTypeToUser < ActiveRecord::Migration
  def change
    add_column :users, :role_type, :integer, null: false, default: 0
  end
end

приложение/models/user.rb

class User < ActiveRecord::Base
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  ROLES = ['default', 'admin', 'moderator']
end

Gemfile

gem 'rails_admin', github: 'sferik/rails_admin'

config/initializers/rails_admin.rb

RailsAdmin.config do |config|
  config.model User do
    edit do
      field :role_type do
        partial 'form'
      end
    end
  end
end

app/views/rails_admin/main/_form.html.erb

<%= form.select :role_type, User::ROLES.each_with_index.map { |e, i| [e, i] } %>

person user664833    schedule 22.11.2013    source источник


Ответы (2)


Вы можете создать в своей модели метод role_type_enum, который возвращает User::ROLES.

https://github.com/sferik/rails_admin/wiki/Enumeration

person Daniel Bang    schedule 16.01.2014

Я знаю, что это немного поздно, но сегодня я столкнулся с этой проблемой и нашел решение! Если кто-то наткнется на это: изменив field: you_column_name do на configure: your_column_name do в вашем инициализаторе rails_admin, он все равно должен отображать все ваши остальные поля и изменять только указанное.

Благодаря документу: https://github.com/sferik/rails_admin/wiki/Fields

person askprod    schedule 11.02.2020