2012-05-03 16 views
0

それぞれの優れたRailsCastチュートリアルに基づいて、簡単な検索機能をwill_paginateページネーションと組み合わせています。単純検索、will_paginate、および注文の組み合わせ

(モデル内の)コードを特定の順序で検索することなく経路上のpaginate要求で正常に動作

def search(search, page) 

    # See RailsCasts #37 Simple Search Form & #51 will_paginate 

    if search 
    @matches = SalesActivity.where('salespeople.name LIKE ? OR products.name LIKE ?', 
             "%#{search}%", "%#{search}%") 

    @matches.paginate :per_page => 30, 
         :page => page, 
         :order => 'created_at DESC' # <--- causes exception 
    else 
    paginate :include => [:salesperson, :product], 
      :order => 'created_at DESC', # works 
      :per_page => 30, 
      :page => page 
    end 
end 

、以下に示されています。

しかし、検索結果(@matches)を使用するパスに、私は次のエラーを取得する、

SQLite3::SQLException: ambiguous column name: created_at: SELECT ... ORDER BY created_at DESC LIMIT 30 OFFSET 

私は秩序パラメータを削除した場合、それが正常に動作します。

これを解決する方法についてお勧めします。ありがとう。彼らのためにレール2と3の間に大きな変化

はあなたの一部としてのcreated_atを生成することをダブルチェックもありませんでした

答えて

0

ここでの修正点は、 'レコード'要求の最後に 'すべて'を追加して、Active Record Queryプロトコルに従ってデータをロードするための実際のクエリを開始することでした。

@matches = SalesActivity.where('salespeople.name LIKE ? OR products.name LIKE ?', 
            "%#{search}%", "%#{search}%").all 
0

これらのレールのキャストの両方がそれらをsuretを作るために、私はソースになりますかなり古いです移行。

0
@matches.paginate(:per_page => 30,:page => page).order('created_at DESC') 
関連する問題