2014-10-19 68 views
2

主动联系提供了自定义过滤器和范围时所显示的索引页上,像这样:Activeadmin自定义过滤器和范围轨道4

我的管理应用程序/管理/ 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 

,但在上面的代码既范围和过滤器不工作。索引页面不会导致显示所有记录。

注意:当我从控制器删除我的自定义索引动作范围和过滤器工作正常。

我的管理应用程序/管理/ 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 

如何索引行动资源越来越默认牵强,我想超越我自己的条件指数资源。

任何事情需要与索引操作添加,

请任何帮助我实现这一点,我在努力了很多,找到的结果。

谢谢。

回答

1

处理使用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

试试这个:

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

+0

这个代码给出下面的错误, 未定义局部变量或方法'collection_before_scope”为# 2014-10-20 10:44:06

+0

没错,''scoped_collection是解决方案。 – nistvan 2014-10-20 11:35:01

+0

但分页不起作用。如何实现这个 – 2014-10-20 11:36:23