Active Admin提供了索引页面上显示的自定义过滤器和范围,如下所示:
我的管理员app / admin / compensatory_off.rb代码是
ActiveAdmin.register CompensatoryOff do
scope :pending, default: true
scope :approved
filter :claim_date, collection: proc { CompensatoryOff.all.map(&:claim_date) }
My Controller for index action :
controller do
def index
@page_title = "Comp-Off"
index! do |format|
if (current_user.has_role? :HRMS_Supervisor)
@compensatory_offs = CompensatoryOff.get_subordinate_employees_comp_offs(current_user).page(params[:page]).per(10)
else
@compensatory_offs = current_user.employee.compensatory_offs.order("compensatory_offs.claim_date DESC").page(params[:page]).per(10) if current_user.employee
end
format.html {
render "active_admin/resource/index"
}
end
end
end
end
我在上面的代码中使用过滤器和范围。
在我的模型中,我也定义了范围,
class CompensatoryOff < ActiveRecord::Base
scope :pending, ->{where(status: "Pending Approval")}
scope :approved, ->{where(status: "Approved")}
#scope :claim_date_eq, -> (claim_date) {where(claim_date: claim_date)}
end
但在上面的代码中,范围和过滤器都不起作用。索引页面没有显示任何显示所有记录的内容。
注意:当我从控制器中删除自定义索引操作时,范围和过滤器都正常工作。
我的管理员app / admin / compensatory_off.rb代码是
ActiveAdmin.register CompensatoryOff do
scope :pending, default: true
scope :approved
filter :claim_date, collection: proc { CompensatoryOff.all.map(&:claim_date) }
My Controller for index action :
controller do
end
end
默认情况下如何获取索引操作资源,我想用自己的条件覆盖索引资源。
任何需要添加索引操作的东西,
请帮助我实现这一目标,我正在努力寻找结果。
感谢。
答案 0 :(得分:3)
使用 scoped_collection 工作,
controller do
def scoped_collection
if (current_user.has_role? :HRMS_Supervisor)
@leave_availed_details = LeaveAvailedDetail.get_subordinate_employees_leaves(current_user).page(params[:page]).per(10)
else
@leave_availed_details = current_user.employee.leave_availed_details.order("leave_availed_details.status DESC").page(params[:page]).per(10) if current_user.employee
end
end
# def index
# #@page_title = "Leave Details"
# end
end
用于分页使用以下代码。
before_filter :only => :index do
@per_page = 10
end
答案 1 :(得分:1)
试试这个:
def index
if (current_user.has_role? :HRMS_Supervisor)
@compensatory_offs = CompensatoryOff.get_subordinate_employees_comp_offs(current_user)
else
@compensatory_offs = current_user.employee.compensatory_offs.order("compensatory_offs.claim_date DESC") if current_user.employee
end
index!
end
分页将由ActiveAdmin处理