在 Active Admin 中创建新项目时过滤下拉列表 Rails
Filtering dropdown when creating a new item in Active Admin Rails
我有一个 Rails 5 应用程序,它使用 Devise
通过标准 User
模型进行注册和会话。我还有 Rolify
与两种类型的角色(学生、教师)集成。
class User < ApplicationRecord
rolify
mount_uploader :avatar, AvatarUploader
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
validates_integrity_of :avatar
validates_processing_of :avatar
include PgSearch
pg_search_scope :search_by_full_name, against: [:full_name],using: {
tsearch: {
prefix: true,
highlight: {
start_sel: '<b>',
stop_sel: '</b>',
}
}
}
private
def avatar_size_validation
errors[:avatar] << "should be less than 500KB" if avatar.size > 0.5.megabytes
end
end
我想展示一些有特色的老师,所以我有一个 table 叫做 featured_teachers。迁移如下。
class CreateFeaturedTeachers < ActiveRecord::Migration[5.2]
def change
create_table :featured_teachers, id: :uuid do |t|
t.references :user, foreign_key: true,type: :uuid
t.timestamps
end
end
end
下面给出了相关的 FeaturedTeacher 模型
class FeaturedTeacher < ApplicationRecord
belongs_to :user
end
我想使用 Active Admin 来管理精选教师,因此我创建了以下 Active Admin 资源。
ActiveAdmin.register FeaturedTeacher do
permit_params :user_id
actions :index,:new, :destroy
index do
selectable_column
column :user
column :created_at
actions name: "Actions"
end
end
但实际情况是,当我想添加一位新的特色教师时,我在下拉列表中获得了数据库中用户的完整列表。
我想做的是只显示角色类型为 'teacher' 的用户,以及在将新用户添加到特色教师列表时还没有添加到特色教师 table 的用户在活动管理员 UI 中。
有人可以帮我解决这个问题吗?我对 Ruby 和 Rails 有点陌生,想了解如何完成这项工作。我很可能在其他 Active Admin 界面中也需要这个。
谢谢。
您需要为特色教师创建表格,请在 featured_teachers.rb
活动管理文件中添加以下代码
form do |f|
f.inputs 'Featured Teacher' do
# in the select box only load those users which are teacher and not in featured teacher list you need to add query for it
f.input :user, as: :select, collection: User.where(role: 'teacher').map { |u| [u.name, u.id] }, include_blank: true, allow_blank: false, input_html: { class: 'select2' }
# please also add other fields of featured teacher model
您可以在活动管理文档中查看所有可用选项here
我有一个 Rails 5 应用程序,它使用 Devise
通过标准 User
模型进行注册和会话。我还有 Rolify
与两种类型的角色(学生、教师)集成。
class User < ApplicationRecord
rolify
mount_uploader :avatar, AvatarUploader
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
validates_integrity_of :avatar
validates_processing_of :avatar
include PgSearch
pg_search_scope :search_by_full_name, against: [:full_name],using: {
tsearch: {
prefix: true,
highlight: {
start_sel: '<b>',
stop_sel: '</b>',
}
}
}
private
def avatar_size_validation
errors[:avatar] << "should be less than 500KB" if avatar.size > 0.5.megabytes
end
end
我想展示一些有特色的老师,所以我有一个 table 叫做 featured_teachers。迁移如下。
class CreateFeaturedTeachers < ActiveRecord::Migration[5.2]
def change
create_table :featured_teachers, id: :uuid do |t|
t.references :user, foreign_key: true,type: :uuid
t.timestamps
end
end
end
下面给出了相关的 FeaturedTeacher 模型
class FeaturedTeacher < ApplicationRecord
belongs_to :user
end
我想使用 Active Admin 来管理精选教师,因此我创建了以下 Active Admin 资源。
ActiveAdmin.register FeaturedTeacher do
permit_params :user_id
actions :index,:new, :destroy
index do
selectable_column
column :user
column :created_at
actions name: "Actions"
end
end
但实际情况是,当我想添加一位新的特色教师时,我在下拉列表中获得了数据库中用户的完整列表。
我想做的是只显示角色类型为 'teacher' 的用户,以及在将新用户添加到特色教师列表时还没有添加到特色教师 table 的用户在活动管理员 UI 中。
有人可以帮我解决这个问题吗?我对 Ruby 和 Rails 有点陌生,想了解如何完成这项工作。我很可能在其他 Active Admin 界面中也需要这个。
谢谢。
您需要为特色教师创建表格,请在 featured_teachers.rb
活动管理文件中添加以下代码
form do |f|
f.inputs 'Featured Teacher' do
# in the select box only load those users which are teacher and not in featured teacher list you need to add query for it
f.input :user, as: :select, collection: User.where(role: 'teacher').map { |u| [u.name, u.id] }, include_blank: true, allow_blank: false, input_html: { class: 'select2' }
# please also add other fields of featured teacher model
您可以在活动管理文档中查看所有可用选项here