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_id ではなく location_name で場所の列を並べ替えられるようにしたいと考えています。

ありがとうございました

4

2 に答える 2

0

ご回答ありがとうございます。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>

data-source は Workshop_path を参照しているため、location_name は、location_id= Workshop.id によって Workshop アクティブ レコードに関連付けられたテーブル Locations の列であることに注意してください。

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 に答える