如何 select 全部来自多个 kaminari 页面
How to select all from multiple kaminari pages
我在 rails 应用程序中使用 Kaminari 进行分页。我需要 select 全部用于当前页面或每个页面上的项目。当前页面是相当简单的捆绑包,我如何 select 其他页面上的所有项目。
file_items_controller.rb
def index
account = Account.includes(:credentials).find params[:account_id]
@page = page_param.to_i
@tab = 'Files'
@sort_by = sort_by
@credential = if params[:credential_id].blank?
account.credentials.first || nil
else
account.credentials.find(params[:credential_id])
end
return unless @credential
file_items = FileItem.file_item_list(@credential.root_folder, sort_by)
@total_count = file_items.count
@max_per_page = file_items.count <= 15 ? 'all' : max_per_page.to_i
file_items_scope = Kaminari.paginate_array(file_items.select(&:file?), total_count: file_items.count).page(page_param)
@file_items = if max_per_page == 'all'
file_items_scope.per(file_items.count) || []
else
file_items_scope.per(max_per_page) || []
end
end
file_items.js
$('a.select-all-current').click(function(e){
e.preventDefault();
$('input:not(:checked)').each(function(_, element){
$(element).click();
});
});
$('a.select-all-files').click(function(e){
e.preventDefault();
$('a.select-all-current').click();
});
index.html.slim
...
.row
ul.file-list
- @file_items.each do |file_item|
li.row.file-item
.col-lg-9
p.label
= "#{file_item[:path]}/#{file_item[:name]}"
p.file-size
= "#{number_to_human_size(file_item[:size]).downcase} | "
.col-lg-1.pull-right
= check_box_tag "file_id_#{file_item[:id]}", file_item[:id], false, class: 'file-box'
...
此示例采用 ActiveRecord,但您应该能够根据自己的情况对其进行调整:
class ItemsController < ApplicationController
def index
@items = if params[:per_page] == 'all'
Item.all
else
Item.page( params[:page] ).per( params[:per_page] )
end
end
end
我在 rails 应用程序中使用 Kaminari 进行分页。我需要 select 全部用于当前页面或每个页面上的项目。当前页面是相当简单的捆绑包,我如何 select 其他页面上的所有项目。
file_items_controller.rb
def index
account = Account.includes(:credentials).find params[:account_id]
@page = page_param.to_i
@tab = 'Files'
@sort_by = sort_by
@credential = if params[:credential_id].blank?
account.credentials.first || nil
else
account.credentials.find(params[:credential_id])
end
return unless @credential
file_items = FileItem.file_item_list(@credential.root_folder, sort_by)
@total_count = file_items.count
@max_per_page = file_items.count <= 15 ? 'all' : max_per_page.to_i
file_items_scope = Kaminari.paginate_array(file_items.select(&:file?), total_count: file_items.count).page(page_param)
@file_items = if max_per_page == 'all'
file_items_scope.per(file_items.count) || []
else
file_items_scope.per(max_per_page) || []
end
end
file_items.js
$('a.select-all-current').click(function(e){
e.preventDefault();
$('input:not(:checked)').each(function(_, element){
$(element).click();
});
});
$('a.select-all-files').click(function(e){
e.preventDefault();
$('a.select-all-current').click();
});
index.html.slim
...
.row
ul.file-list
- @file_items.each do |file_item|
li.row.file-item
.col-lg-9
p.label
= "#{file_item[:path]}/#{file_item[:name]}"
p.file-size
= "#{number_to_human_size(file_item[:size]).downcase} | "
.col-lg-1.pull-right
= check_box_tag "file_id_#{file_item[:id]}", file_item[:id], false, class: 'file-box'
...
此示例采用 ActiveRecord,但您应该能够根据自己的情况对其进行调整:
class ItemsController < ApplicationController
def index
@items = if params[:per_page] == 'all'
Item.all
else
Item.page( params[:page] ).per( params[:per_page] )
end
end
end