Rails smart_listing配置

时间:2014-08-13 22:18:06

标签: ruby-on-rails ruby-on-rails-4 kaminari smart-listing

我正在尝试在我的应用中设置smart_listing gem。我在何处以及如何配置每页分页结果的默认值。在smart_listing的文档中提到它使用kaminari。

2 个答案:

答案 0 :(得分:4)

如果您还没有config/initializers/kaminari_config.rb文件,请运行Kaminari的配置生成器:

bundle exec rails generate kaminari:config

这将使用默认内容创建config/initializers/kaminari_config.rb

Kaminari.configure do |config|
  # config.default_per_page = 25
  # config.max_per_page = nil
  # config.window = 4
  # config.outer_window = 0
  # config.left = 0
  # config.right = 0
  # config.page_method_name = :page
  # config.param_name = :page
end

只需取消注释并编辑您有兴趣更改的配置选项。

更新:

SmartListing为config/initializers/smart_listing.rb中的分页提供了自己的配置选项:

SmartListing.configure do |config|
  config.global_options({
    #:param_names  => {                                              # param names
      #:page                         => :page,
      #:per_page                     => :per_page,
      #:sort                         => :sort,
    #},
    #:array                          => false,                       # controls whether smart list should be using arrays or AR collections
    #:max_count                      => nil,                         # limit number of rows
    #:unlimited_per_page             => false,                       # allow infinite page size
    #:paginate                       => true,                        # allow pagination
    #:memorize_per_page              => false,                       # save per page settings in the cookie
    #:page_sizes                     => DEFAULT_PAGE_SIZES,          # set available page sizes array
    #:kaminari_options               => {:theme => "smart_listing"}, # Kaminari's paginate helper options
  })

  config.constants :classes, {
    #:main                  => "smart-listing",
    #:editable              => "editable",
    #:content               => "content",
    #:loading               => "loading",
    #:status                => "smart-listing-status",
    #:item_actions          => "actions",
    #:new_item_placeholder  => "new-item-placeholder",
    #:new_item_action       => "new-item-action",
    #:new_item_button       => "btn",
    #:hidden                => "hidden",
    #:autoselect            => "autoselect",
    #:callback              => "callback",
    #:pagination_per_page   => "pagination-per-page text-center",
    #:pagination_count      => "count",
    #:inline_editing        => "info",
    #:no_records            => "no-records",
    #:limit                 => "smart-listing-limit",
    #:limit_alert           => "smart-listing-limit-alert",
    #:controls              => "smart-listing-controls",
    #:controls_reset        => "reset",
    #:filtering             => "filter",
    #:filtering_search      => "glyphicon-search",
    #:filtering_cancel      => "glyphicon-remove",
    #:filtering_disabled    => "disabled",
    #:sortable              => "sortable",
    #:icon_new              => "glyphicon glyphicon-plus",
    #:icon_edit             => "glyphicon glyphicon-pencil",
    #:icon_trash            => "glyphicon glyphicon-trash",
    #:icon_inactive         => "glyphicon glyphicon-circle",
    #:icon_show             => "glyphicon glyphicon-share-alt",
    #:icon_sort_none        => "glyphicon glyphicon-resize-vertical",
    #:icon_sort_up          => "glyphicon glyphicon-chevron-up",
    #:icon_sort_down        => "glyphicon glyphicon-chevron-down",
  }

  config.constants :data_attributes, {
    #:main                  => "smart-listing",
    #:confirmation          => "confirmation",
    #:id                    => "id",
    #:href                  => "href",
    #:callback_href         => "callback-href",
    #:max_count             => "max-count",
    #:inline_edit_backup    => "smart-listing-edit-backup",
    #:params                => "params",
    #:observed              => "observed",
    #:href                  => "href",
    #:autoshow              => "autoshow",
    #:popover               => "slpopover",
  }

  config.constants :selectors, {
    #:item_action_destroy   => "a.destroy",
    #:edit_cancel           => "button.cancel",
    #:row                   => "tr",
    #:head                  => "thead",
    #:filtering_icon        => "i"
  }
end

取消注释page_sizes行并将DEFAULT_PAGE_SIZES替换为[10,20,50,100]等数组

答案 1 :(得分:1)

无需在page_sizes中对initializers/smart_listing.rb发表评论。 您只需在控制器中定义per_page值,例如:

users_scope = User.all.includes(:bio)
users_scope = users_scope.like(params[:filter]) if params[:filter]
@users = smart_listing_create :users, users_scope, partial: "users/list", page_sizes: [5, 7, 13, 26]

smart_listing v1.1.2