0

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

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

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

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

我想要做的是添加一个参数“字母”,以便仅对符号以给定字母开头的产品进行分页和显示。

这是我尝试过的:

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

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

处理 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
在 layouts/main 中渲染模板
渲染产品/索引
在 21 毫秒内完成(查看:4,DB:9)| 200 OK [http://localhost/products]

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

4

1 回答 1

3

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

% 通常是 SQL 通配符。

于 2010-09-15T17:54:38.210 回答