我在这个paginate_by_sql调用中做错了什么?

时间:2010-09-15 17:19:49

标签: ruby-on-rails ruby will-paginate

原谅我,伙计们;我仍然是完整的 RoR新手。

我正在尝试使用will_paginate gem在我的Rails应用中为搜索结果添加分页。到目前为止,它一直很好用。但是,我遇到了障碍。

我有一个“产品”表,其中包含数千条记录,我希望这些记录完全可以浏览。在最基本的情况下,这很容易。我的控制器里有这个:

page = params[:page] || 1
@products = Product.paginate :page => page, :order => 'symbol'

我想要做的是添加一个参数“letter”,这样只有符号以给定字母开头的产品才会被分页并显示。

这就是我的尝试:

letter = params[:letter] || 'A'
page = params[:page] || 1
@products = Product.paginate_by_sql
    ['select * from products where symbol like ?', letter + '*'],
    :page => page
    :order => 'symbol'

但是使用此代码后,页面将无法加载。我在日志文件中看到了这一点,但它对我来说实际上看起来不是一个错误:

Processing ProductsController#index (for 127.0.0.1 at 2010-09-15 10:03:22) [GET]
  [4;36;1mProduct Load (9.0ms)[0m   [0;1mselect * from products where symbol like 'A*' LIMIT 50 OFFSET 0[0m
Rendering template within layouts/main
Rendering products/index
Completed in 21ms (View: 4, DB: 9) | 200 OK [http://localhost/products]

我意识到我可能遗漏了一些明显的东西,或者不包括解决这个问题所需的信息。有人会关心引导我朝正确的方向发展,还是让我知道我应该提供哪些其他信息?

1 个答案:

答案 0 :(得分:3)

不确定您使用的数据库,但我认为您的SQL错误。这不应该是letter + '%'而不是letter + '*'吗?

%通常是SQL通配符。