Я использую 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] } %>