0

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

Railscast 第 340 集允许在服务器端操作数据表,但不允许您对关联的表值进行排序

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 = location_id)

在 Workshop 数据表类上,显示的信息是 location_name

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

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

谢谢

4

2 回答 2

0

谢谢您的回答。我担心这是不可能的,因为 json 渲染是指 Workshops 活动记录而不是 Location 活动记录

<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 是与 Workshop 活动记录关联的表 Locations 的列,通过 location_id= Workshop.id:

data-source="<%= workshops_url(format: "json") %>">
于 2013-04-25T14:02:32.380 回答
0

修改您的 WorkshopsDatatable 类中的行,如下所示:

def sort_column
  columns = %w[id location_name]
  columns[params[:iSortCol_0].to_i]
end
于 2013-04-25T01:07:04.133 回答