【问题标题】:DataTables does not sort, when column data is from associated tables using server side processing当列数据来自使用服务器端处理的关联表时,DataTables 不会排序
【发布时间】:2013-04-24 13:39:59
【问题描述】:

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

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 对 location 列进行排序。

谢谢

【问题讨论】:

    标签: ruby-on-rails datatables


    【解决方案1】:

    修改您的 WorkshopsDatatable 类中的行如下:

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

    【讨论】:

      【解决方案2】:

      感谢您的回答。我担心这是不可能的,因为 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") %>">
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-04
        • 1970-01-01
        • 2016-09-08
        相关资源
        最近更新 更多