WiceGrid 3.6.0.pre4 examples

Custom filters (method chains)

An array of symbols submitted to :custom_filter has a special meaning. The first symbol is sent as a method name to EVERY ActiveRecord object. If an object responds to this method, the second method name is sent to the returned value unless it is nil, and so on. The dropdown is populated by the list unique values. The conditions set up by the user are ignored, that is, the records used are all those found on all pages without any active filters. Naturally this can be extremely inneffective and should be used with caution.

  • # encoding: utf-8
    class CustomFilters3Controller < ApplicationController
      def index
        @tasks_grid = initialize_grid(Task,
          include: [:relevant_version, :expected_version, :project],
          conditions: { projects: { id: Project.first.id } },
          custom_order: {
            'tasks.expected_version_id' => 'expected_versions_tasks.name'
          }
        )
      end
    end
    
  • <%= grid(@tasks_grid) do |g|
    
      g.column name:  'ID', attribute: 'id', filter: false
    
      g.column name:  'Title', attribute: 'title'
    
      g.column name:  'Found in version', assoc: :relevant_version, attribute: 'name', custom_filter: :auto do |task|
        task.relevant_version.name if task.relevant_version
      end
    
      g.column name:  'Expected in version', attribute: 'expected_version_id', custom_filter: [:expected_version, :to_option] do |task|
        task.expected_version.name if task.expected_version
      end
    
      g.column   do |task|
        link_to('Edit', edit_task_path(task))
      end
    end -%>
  • .well
      %h2= current_page_title
      %p
        An array of symbols submitted to
        %code :custom_filter
        has a special meaning. The first symbol is sent as a method name to EVERY ActiveRecord object.
        If an object responds to this method, the second method name is sent to the returned value unless it is nil, and so on.
        The dropdown is populated by the list unique values.
        The conditions set up by the user are ignored, that is, the records used are all those found on all pages without any active filters.
        Naturally this can be extremely inneffective and should be used with caution.
    
    = show_code
    
    .row-fluid
      .col-md-12
        = render   'grid'
IDTitleFound in versionExpected in version
101-120 / 150 show all
343dolorem sit molestias1.0Edit
349et similique2.0Edit
355optio2.0Edit
362eum sapiente1.0Edit
366debitis nihil quidem1.1Edit
367similique1.0Edit
371id officiis dolorem1.1Edit
379vero repellat2.0Edit
386eveniet ipsam et1.2Edit
387sed2.0Edit
389ut1.11.0Edit
391aut est1.11.2Edit
392velit vitae1.0Edit
393nihil1.0Edit
395quia nobis quidemEdit
399rerum quae1.23.0Edit
401cum deserunt nesciunt3.01.1Edit
403et praesentium tempore2.0Edit
406sequi beataeEdit
407similique voluptatumEdit

Fork me on GitHub