Что я делаю не так в этом вызове paginate_by_sql? - PullRequest
0 голосов
/ 15 сентября 2010

Простите, ребята;Я все еще complete RoR новичок.

Я пытаюсь использовать камень will_paginate , чтобы добавить нумерацию страниц в результаты поиска в моем приложении Rails.До сих пор он работал отлично.Однако я наткнулся на контрольно-пропускной пункт.

У меня есть таблица «products» с тысячами записей, которые я хочу полностью просмотреть.Это легко в самом простом сценарии.У меня в контроллере есть следующее:

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'

Но с этим кодом страница не будет загружаться.Я вижу это в файле журнала, но на самом деле это не выглядит для меня ошибкой:

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 Ответ

3 голосов
/ 15 сентября 2010

Не уверен, какую базу данных вы используете, но я считаю, что ваш SQL неверен.Разве это не должно быть letter + '%' не letter + '*'?

%, как правило, подстановочный знак SQL.

...