提问者:小点点

当列数据来自使用服务器端处理的关联表时,DataTables不排序


是否使用服务器端处理对关联表中的列数据进行排序?

在服务器端操作数据表,但不允许对相关的表值进行排序

class Workshop < ActiveRecord::Base 
  belongs_to :location, :class_name => 'Location'
end

class Location < ActiveRecord::Base
  has_many :workshops
  attr_accessible :name,
end

记录按id关联(workshop.id=位置\u id)

在Workshop datatable类中,显示的信息是位置名称

class WorkshopsDatatable
  def data
    workshops.map do |workshop|
    {
      id:           workshop.id,
      location:     workshop.location_name,
    }
  end
end

我希望能够按location_name而不是location_id对位置列进行排序。

谢谢你


共2个答案

匿名用户

按如下方式修改WorkshopStatable类中的行:

def sort_column
  columns = %w[id location_name]
  columns[params[:iSortCol_0].to_i]
end

匿名用户

谢谢你的回答。我很惊讶这是不可能的,因为json呈现引用的是Workshops活动记录,而不是位置活动记录

<div class="well well-tzippy datatable-component">
  <table id="workshops" class="table-striped" data-source="<%= workshops_url(format: "json") %>">
    <thead>
      <tr>
      <th class="text-left">Title</th>
       <th class="text-left">Instructor</th>
       <th>Scheduled Time</th>
       <th class="text-left">Location</th>
       <th class="text-left">Contact</th>
       <th>Stats</th>

     </tr>
   </thead>
  <tbody>
  </tbody>

请注意,数据源引用Workshop_path,因此location_name是表中与研讨会活动记录关联的位置一列,location_id=Workshop.id:

data-source="<%= workshops_url(format: "json") %>">