您正在将简单的搜索工具与will_paginate分页相结合,基于各自优秀的RailsCasts教程。
代码(在模型中)如下所示,
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
如果我删除了order参数,它可以正常工作。
我很感激有关如何解决此问题的建议。感谢。
答案 0 :(得分:0)
这两个轨道演员都很老了我会查看它们的来源,以确保它们之间的轨道2和3之间没有重大变化
另外,请仔细检查您是否在迁移过程中生成了created_at。
答案 1 :(得分:0)
此处的修复是将'all'添加到'where'请求的末尾,以根据Active Record Query协议启动实际查询以加载数据。
@matches = SalesActivity.where('salespeople.name LIKE ? OR products.name LIKE ?',
"%#{search}%", "%#{search}%").all
答案 2 :(得分:0)
@matches.paginate(:per_page => 30,:page => page).order('created_at DESC')