Поиск:

Ответ в темуСоздание новой темы Создание опроса
> paginate 
V
    Опции темы
Лена
Дата 14.10.2009, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: нет
Всего: 11



Не могу найти у себя ошибку. Реализован простой поиск:
Код

<% form_tag :action => :find_tovar, :method => 'get' do  %>
 <table cellpadding="0" cellspacing="0">  
  <tr><td>
  <label for ="title">Поиск:</label><td/><td></td><tr>
  <tr><td>
  <%= text_field_tag :title, '', :size=>15 %><td/><td>
  <%= image_submit_tag("find.png") %>
  </td><tr>
 </table>
 <% end %>



Код

def find_tovar
     
     param = params[:title] 
      if param.empty?
        redirect_to_index("Введите название товара")
      end
      @tovary = Product.find(:all, :conditions => ["title like ?", "#{param}%"], :order => 'title')
       if @tovary.empty?
         redirect_to_index("Указанного товара нет") 
       end
#показать find_tovar.rhtml


   #@product_pages2, @tovary = paginate :products, :per_page => 10, :order => 'title'
end



Все работает. Ввожу, например букву D и получаю свои два товара. Товаров на эту букву действительно два в базе.
Но я хочу добавить на будущее разбитие найденных товаров на странице по 10 штук. Когда я убираю комментарий:
@product_pages2, @tovary = paginate :products, :per_page => 10, :order => 'title'

все перстает работать. Я получаю список всех товаров по 10 штук. Как правильно разбивать найденные товары по 10 штук на странице?

PM MAIL   Вверх
source777
Дата 16.10.2009, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 12
Всего: 56



Цитата(Лена @  14.10.2009,  12:55 Найти цитируемый пост)
@product_pages2, @tovary = paginate :products, :per_page => 10, :order => 'title'

и где тут conditions?


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
Лена
Дата 16.10.2009, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: нет
Всего: 11



Видимо я совсем не понимаю метод paginate. smile 
Я рассуждала так, строка:
@tovary = Product.find(:all, :conditions => ["title like ?", "#{param}%"], :order => 'title')
Заносит в переменную @tovary все, что мне нужно.
Строка:
@product_pages2, @tovary = paginate :products, :per_page => 10, :order => 'title'
Разбивает это все по 10 штук на страницах.

Значит, получается так, если написать:
@product_pages2, @tovary = paginate :products, :per_page => 10, :conditions => ["title like ?", "#{param}%"], :order => 'title'
То все заработает?
Ну а тогда строка:
@tovary = Product.find(:all, :conditions => ["title like ?", "#{param}%"], :order => 'title')
нужна вообще или нет?


PM MAIL   Вверх
source777
Дата 19.10.2009, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 12
Всего: 56



Цитата(Лена @  16.10.2009,  15:25 Найти цитируемый пост)
Строка:
@product_pages2, @tovary = paginate :products, :per_page => 10, :order => 'title'
Разбивает это все по 10 штук на страницах.

У тебя же тут @tovary слева от присваивания, так что логика явно другая, по идее метод должен ещё номер текущей страницы принимать, хотя я больше привык пользоваться SearchLogic и will_paginate.


Цитата(Лена @  16.10.2009,  15:25 Найти цитируемый пост)
Ну а тогда строка:
@tovary = Product.find(:all, :conditions => ["title like ?", "#{param}%"], :order => 'title')
нужна вообще или нет?

Нет, не нужна.


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
Лена
Дата 22.10.2009, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: нет
Всего: 11



Cпасибо, все понятно и все работает. smile 
PM MAIL   Вверх
source777
Дата 22.10.2009, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 12
Всего: 56



Рад помочь, не забывай помечать тему решённой. См. справа от заголовка темы ссылку "Пометить как решённый"


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Ruby on Rails"
source777
  • С чего начать? начинаем
  • Документацию смотрим тут
  • Обязательно следуйте правилам Vingrad.
  • Пожалуйста, прочитайте рекомендации по работе в форуме и навигации по Vingrad.
  • Для вставки кодов Ruby используйте тег: [code=ruby]код[/code]. Когда в будущем подсветка синтаксиса для Ruby будет реализована, весь исходных код преобразится.
  • Используйтe чекбокс "Транслит" (возле кнопок кодов), если у Вас нет русских шрифтов.
  • Помните, для каждого вопроса должна быть своя тема.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Ruby On Rails | Следующая тема »


 




[ Время генерации скрипта: 0.1011 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.