0

私はこれらのモデルを持っていて、それを注文するために meta_search で遊んでいます。

class Company < ActiveRecord::Base
  has_many :delivers
  has_many :estimates, :through => :deliver
end

class Estimate < ActiveRecord::Base
  has_many :delivers, :dependent => :destroy
  has_many :companies, :through => :delivers
end

class Deliver < ActiveRecord::Base
  belongs_to :estimate
  belongs_to :company
end

ご覧のように、会社には多くの見積もりがあり、見積もりの​​数が最も多い会社から見積もりの​​数が最も少ない会社の順に会社を表示するフィルターが必要です。
次のような並べ替えリンクが必要です。

= sort_link @search, :estimates_asc

私はそのように注文できることを知っています この声明を持つ会社

Company.joins(:estimates).sort_by{|x| -x.estimates.size}

私を助けてくれてありがとう。

4

1 に答える 1

0

これは私の場合であり、あなたのプロジェクトで試してみてください。私ができることをお手伝いします:

だから私は carname_id と carmodel_id を持つ車のテーブルを持っています。次に、名前と ID の両方を持つ carnames と carmodels の 2 つのテーブルを追加します。ここで、id 2 の carname Mercedes と id 5 の carmodel S classe があるとします。この場合、cartable には値 2 と 5 Mercedes S classe が含まれます。

フィールドで並べ替えるには、次のようにしました。

車のコントローラーで:

  @search = Car.search(params[:search])
    @search.meta_sort ||= 'created_at.desc'  <-- this line is for default order display, you can use any other field
    @cars = @search.all.paginate :page => params[:page], :per_page => 5

そして視野に

<%= sort_link @search, :carname_name,  "Car make" %>  <-- carname is the field from 

    car table where the carname id is stored and name is the he name itself for this id that's in carname table

<%= sort_link @search, :carmodel_name, "Car model"%>

それはもういいです。

あなたの場合、私はそれが次のようなものになると仮定しています

<%= sort_link @search, :company_estimate, "車種" %>

それが役に立てば幸い。

于 2011-10-15T01:05:00.797 に答える