Sha256: c8877f14b48abcf02a6978755049b634bb9d1958e3df10f9a3f66b3ccc8d0721

Contents?: true

Size: 1.59 KB

Versions: 5

Compression:

Stored size: 1.59 KB

Contents

.card.bg-light
  .card-body
    %h2= current_page_title
    %p
      There are two approaches to custom filters with joined tables. The first thing that comes to mind is to define
      a column of a joined table with
      %code :attribute
      and
      %code :assoc
      , and submit a list of all possible values of this column to
      %code :custom_filter
      , like it is done in the example below in the Priority column:
    %p
      %code g.column name: 'Priority', attribute: 'name', assoc: :priority, custom_filter: %w(Anecdotic High Low Normal Urgent) do |task|
    %p
      This works but such a filter produces a query with a
      %code WHERE
      clause comparing a varchar field with one of the string values submitted to
      %code :custom_filter
      \.
      This is not guaranteed to be as efficient as comparing an indexed integer foreign key with an integer primary key, thus, this approach is highly advised against.
    %p
      To implement filtering by foreign keys, define the column with the foreign key in
      %code :attribute
      and submit a hash or a two element array containing the IDs and labels of the joined table to
      %code :attribute
      \.
      This has a negative side effect on sorting - the column will now be sorted according to the numerical value of the foreign key.
      It can be dealt with by overiding sorting by
      %code :custom_order
      in
      %code initialize_grid
      \:
    %p
      %code custom_order: {'tasks.status_id' => 'statuses.position', 'tasks.project_id' => 'projects.name'}

= show_code

.row
  .col-md-12
    = render   'grid'

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
wice_grid-7.1.4 spec/support/test_app/app/views/custom_filters2/index.html.haml
wice_grid-7.1.3 spec/support/test_app/app/views/custom_filters2/index.html.haml
wice_grid-7.1.2 spec/support/test_app/app/views/custom_filters2/index.html.haml
wice_grid-7.1.1 spec/support/test_app/app/views/custom_filters2/index.html.haml
wice_grid-7.1.0 spec/support/test_app/app/views/custom_filters2/index.html.haml