WiceGrid 3.6.0.pre4 examples

Joined tables

Use :include in :initialize_grid to include associated tables. :include can be a single association name, an array of association names. If you need to join tables to joined tabes, use hashes, for example: include: [:priority, :status, {project: :customer}]

To define a column from a joined table, use :assoc to specify a the corresponding association. If you need to join a table to a joined table, list associations in an array on the correct order (look at the customer column).

You can drop a block if you don't need any special markup.

  • # encoding: utf-8
    class JoiningTablesController < ApplicationController
      def index
        @tasks_grid = initialize_grid(Task,
          # You can omit includes if they are all mentioned in :assoc in the view
          # includes: [:priority, :status, {project: :customer}],
          conditions: { archived: false },
          order: 'id'
        )
      end
    end
    
  • <%= grid(@tasks_grid, show_filters: :always) do |g|
    
      g.column name:  'ID', attribute: 'id', filter: false
    
      g.column name:  'Title', attribute: 'title'
    
      g.column name:  'Priority', attribute: 'name',  assoc: :priority
    
      g.column name:  'Status', attribute: 'name', assoc: :status
    
      g.column name:  'Project Name', attribute: 'name', assoc: :project
    
      g.column name:  'Customer', attribute: 'name', assoc: [:project, :customer]
    
    
      g.column name:  'Assigned To', attribute: 'name', assoc: :assigned_users do |task|
        task.assigned_users.collect{|user| user.name}.to_sentence
      end
    
      g.column   do |task|
        link_to('Edit', edit_task_path(task))
      end
    end -%>
    
  • .well
      %h2= current_page_title
      %p
        Use
        %code :include
        in
        %code :initialize_grid
        to include associated tables.
        %code :include
        can be a single association name, an array of association names.
        If you need to join tables to joined tabes, use hashes, for example:
        %code include: [:priority, :status, {project: :customer}]
    
      %p
        To define a column from a joined table, use
        %code :assoc
        to specify a the corresponding association.
        If you need to join a table to a joined table,
        list associations in an array on the correct order
        (look at the customer column).
      %p
        You can drop a block if you don't need any special markup.
    
    = show_code
    
    = render   'grid'
    
ID TitlePriorityStatusProject NameCustomerAssigned To
1-20 / 449 show all
1impedit aperiam liberoCancelledDivine FirmwareSkyNetEdit
2ut sintAnecdoticAssignedDivine FirmwareSkyNetSarah Livingstone and Koobus VenterEdit
3aliquam repudiandaeAnecdoticAssignedDivine FirmwareSkyNetEdit
4nisi quiLowVerifiedDivine FirmwareSkyNetDirk Michaels, Fundiswa Mhlanga, and Koobus VenterEdit
5dicta pariaturHighPostponedDivine FirmwareSkyNetEdit
7ut veniamHighPostponedUltimate WebsiteMNUDirk Michaels and Tania van de MerweEdit
8nullaUrgentResolvedDivine FirmwareSkyNetKoobus VenterEdit
9quisquam in isteDuplicateUltimate WebsiteMNUDirk MichaelsEdit
10rerum occaecatiUrgentCancelledSuper GameMNUPiet SmitEdit
12explicabo hicUrgentPostponedDivine FirmwareSkyNetSarah Livingstone and Dirk MichaelsEdit
13utHighClosedUltimate WebsiteMNUEdit
14repellat consequatur velitAnecdoticNewUltimate WebsiteMNUEdit
15est ut autNewDivine FirmwareSkyNetEdit
16omnisHighAssignedSuper GameMNUEdit
17itaque suscipit commodiStartedSuper GameMNUPiet SmitEdit
18necessitatibus commodiNormalStartedSuper GameMNUEdit
20aspernatur eligendi adipisciHighAssignedUltimate WebsiteMNUObesandjo, Ross Pienaar, and Dirk MichaelsEdit
21et rerum laborumCancelledSuper GameMNUEdit
22etAnecdoticCancelledSuper GameMNUPiet SmitEdit
23exercitationem autAnecdoticClosedDivine FirmwareSkyNetKoobus Venter and Fundiswa MhlangaEdit

Fork me on GitHub