2013-04-24 23 views
0

使用服务器端处理从关联表中排序列数据?当列数据来自使用服务器端处理的关联表时,DataTables不会对其进行排序

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)

在相关记录车间数据表类,显示的信息是位置名称

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

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

谢谢

回答

0

修改一行在WorkshopsDatatable类,如下所示:

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

谢谢您的回答。我affraid因为JSON渲染是指工作坊活动记录,而不是位置活动记录

<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") %>"> 
相关问题