2012-05-03 26 views
0

您好,我们将基于各自优秀的RailsCasts教程的简单搜索工具与will_paginate分页相结合。结合简单的搜索,will_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 

指定的排序工作正常路径上的PAGINATE请求而不搜索。

但是,使用搜索结果(@matches)的道路上,我得到以下错误,

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

如果我删除命令的参数,它工作正常。

我很感激如何解决这个问题的建议。谢谢。

回答

0

此处的修复方法是将'all'添加到'where'请求的末尾,按照Active Record Query协议启动实际查询以加载数据。

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

这两个轨道铸件是很老,我会看看源为他们做出suret有没有为他们

还仔细检查你产生created_at作为部分轨2和3之间发生重大变化的移民。

0
@matches.paginate(:per_page => 30,:page => page).order('created_at DESC')