代码之家  ›  专栏  ›  技术社区  ›  Dan Tao

在这个分页的SQL调用中,我做错了什么?

  •  0
  • Dan Tao  · 技术社区  · 14 年前

    原谅我,伙计们,我还是一个 完成 罗·纽比。

    我正在尝试使用 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 回复  |  直到 14 年前
        1
  •  3
  •   Rob Di Marco    14 年前

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

    %通常是SQL通配符。