![]() |
|
|
![]()
|
|
| Лена |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: нет Всего: 11 |
В строке поиска ввожу наименование и нажимаю поиск. Контроллер поиска вглядит так:
Поиск срабатывает, но при переходе на другую страницу среди найденных товаров получаю: You have a nil object when you didn't expect it! You might have expected an instance of Array. The error occurred while evaluating nil.empty? Анализ показал, что чтобы код работал надо заккоментировать: #if param.empty? #redirect_to_index("Введите название товара") #end Есть ли возможность оставить провеку? Как переделать код в таком случае? Да и вообще мой код не корректен. Ведь есди пользователь переходит на вторую страницу в найденных товарах то и param уже получается пустой. Следовательно и поиск уже не правильно работает.
Т.е. допустим у меня 12 товаров на букву С Если я ввожу эту букву и нажимаю поиск я получаю две страницы. На первой 10 товаров на букву С. При переходе на вторую страницу я попадаю на первую страницу всего каталога. Это сообщение отредактировал(а) Лена - 29.12.2009, 13:07 |
||||
|
|||||
| source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 12 Всего: 56 |
используй blank? вместо empty? или (param.nil? || param.empty?)
-------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
| Лена |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: нет Всего: 11 |
Порльзователь в строке поиска ставит букву С и жмет поиск:
Допустим товаров 15 штук. Выполняется действие:
После выполнения действия пользователь видит страницу с первыми 10 товарами на букву С. Если пользователь захочет увидеть остальный 5 товаров на букву С, он жмет внизу переход на вторую страницу. Вместо того чтобы их увидеть, пользователь почему-то попадает назад в полный католг всех товаров. Плюс еще и видит не нужное ("Введите название товара") Допустим я убираю этот код вообще: if param.blank? redirect_to_index("Введите название товара") end Остается вопрос почему я не могу увидеть вторую страницу, а попадаю назад в каталог. Чтобы понять, что происходит можно зайти на мой сайт. Посмотреть сколько товаров в общем каталоге на букву С. Их 12. Ввожу букву С и жму поиск. Вижу две страницы. При переходе на вторую страницу меня кидает обратно в полный каталог. А в категориях работает нормально. Код в категориях такой:
Разница только в инициализации param... и вызов другой: <%= link_to 'Аминокислоты', :action => 'find_tovar_cat', :category=>'Аминокислоты'%> Это сообщение отредактировал(а) Лена - 29.12.2009, 14:00 |
||||||
|
|||||||
| source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 12 Всего: 56 |
Ссылки, генерируемые will_paginate, покажи.
-------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
| Лена |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: нет Всего: 11 |
Это общий поиск: <div class=pagination><%= will_paginate @tovary %></div> Это поиск по категориям: <div class=pagination><%= will_paginate @tovary2 %></div> Я так понимаю, то при переходе на вторую страницу param в строке поиска становить пустым и поэтому сюда при заходе на вторую страницу передается пустота: @tovary = Product.paginate :page => (page==0 ? 1 : page), :order => 'title', :per_page => 10, :conditions => ["title like ?", "#{param}%"] <- param пустой и поэтому выводиться весь каталог. Или в чем проблема? |
|||
|
||||
| source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 12 Всего: 56 |
Да не код, сами ссылки покажи, которые в результате выполнения этого кода получаются.
-------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
| Лена |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: нет Всего: 11 |
Я прошу прощения какие ссылки? Те что в окне браузера после выполнения кода? Если да то: Ввожу букву С в окне поиска. Жму найти - попадаю на ссылку: http://maximumshop.msk.su/store/find_tovar?method=get вижу товары на букву С если перейти на вторую страницу товара то ссылка становиться: http://maximumshop.msk.su/store/find_tovar?page=2 при этом попадаю на начало перечня всех товаров а не на вторую страницу с товарами на букву С. Если искать по категориям, где все нормально работает то у категорий такие ссылки: http://maximumshop.msk.su/store/find_tovar_cat?category=%D0%90%D0%BC%D0%B8%D0%BD%D0%BE%D0%BA%D0%B8%D1%81%D0%BB%D0%BE%D1%82%D1%8B http://maximumshop.msk.su/store/find_tovar_cat?category=%D0%90%D0%BC%D0%B8%D0%BD%D0%BE%D0%BA%D0%B8%D1%81%D0%BB%D0%BE%D1%82%D1%8B&page=2 Это сообщение отредактировал(а) Лена - 29.12.2009, 19:06 |
|||
|
||||
| source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 12 Всего: 56 |
Что это за хрень? У тебя у формы должен быть атрибут method, а не в action доп. параметр. Попробуй:
-------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
| Лена |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: нет Всего: 11 |
Ничего не изменилось. Вводим букву С и жмем поиск. Первая страница нормальная все товары на букву С. Ссылка стала такой: http://maximumshop.msk.su/store/find_tovar?html%5Bmethod%5D=get При нажати на вторую страницу пагинатора снова отображается весь католог и ссылка такая: http://maximumshop.msk.su/store/find_tovar?page=2 |
|||
|
||||
| source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 12 Всего: 56 |
ты до сих пор не обновила Rails?
Это сообщение отредактировал(а) source777 - 29.12.2009, 21:53 -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
| Лена |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: нет Всего: 11 |
Большое спасибо!
<% form_tag ({:action => :find_tovar}, {:method => 'get'}) do %> заработало. У меня старая версия Ror заморожена в vendor. Я только обновила gem для установки нового пагинатора. Ошибка стала заметной только тогда, когда появилось несколько страниц пагинатора. Проект был практически закончен и я побоялась из-за отсутсвия опыта обновить в нем Rails т.к. предпологала большое кол-во ошибок в старом коде после обновления. Новый проект начну с самой последней версии rails. |
|||
|
||||
| source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 12 Всего: 56 |
Т.е. поддерживать и развивать его ты не собираешься?
Ну так а как ты этот опыт собираешься приобретать? Раз уж ты изучила старую версию, то у тебя есть всего 2 пути: 1) обновить уже работающий проект до свежей версии RoR и уяснить различия, путём гугления по сообщениям возникнувших ошибок. 2) изучать новую версию RoR с нуля. -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
![]()
|
| Правила форума "Ruby on Rails" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Ruby On Rails | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |