我有一个应用程序,您可以在其中填写文档的元数据。我目前在使用默认过滤时遇到问题,因为它没有过滤我的索引表。过滤器选项显示在右侧,您也可以在选择过滤器并点击按钮后在url和params中看到过滤选项。
utf8=✓&q%5Buser_id_eq%5D=3&commit=Filter&order=id_desc
但不知何故,索引表并没有刷新。
我唯一的范围是默认范围:
scope :all, default: true
修改
我认为它与分页有关,因为如果我删除分页,过滤器会再次运行。
这是我app / admin / DocumentType.rb文件中的当前索引方法:
def index
index! do |format|
@document_types = DocumentType.where(archived_at: nil).page(params[:page])
file_name = "document_types_#{DateTime.now.strftime('%a_%d_%b_%Y_%H%M%S').downcase}"
format.xls {
spreadsheet = DocumentTypesSpreadsheet.new @document_types
send_data spreadsheet.generate_xls, filename: file_name + ".xls"
}
end
end
只有未归档的文档类型才会显示在索引中,因此我有
@document_types = DocumentType.where(archived_at: nil).page(params[:page])
现在有了这个我的过滤器不能正常工作。但是,如果我完全删除这一行,它们会再次起作用,除非现在它还显示已归档的文档类型。如果我删除.page(params[:page])
部分,我会收到以下错误消息:
Collection is not a paginated scope. Set collection.page(params[:page]).per(10) before calling :paginated_collection.
答案 0 :(得分:0)
尝试使用此
更新您的控制器def index
index! do |format|
@document_types = DocumentType.where(archived_at: nil).ransack(params[:q]).result
file_name = "document_types_#{DateTime.now.strftime('%a_%d_%b_%Y_%H%M%S').downcase}"
format.xls {
spreadsheet = DocumentTypesSpreadsheet.new @document_types
send_data spreadsheet.generate_xls, filename: file_name + ".xls"
}
end
end
但是你需要确定,你也可以用这个条件显示记录:
.where(archived_at: nil)
因为导出的结果与显示的
不同