| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Ruby On Rails > will_paginate |
| Автор: Лена 21.12.2009, 11:59 |
| Научите, как установить will_paginate. Беру инструкцию отсюда: http://wiki.github.com/mislav/will_paginate/installation Пишу: gem install will_paginate ERROR: could not find will_paginate locally or in a repository Наверное, надо как-то указать ссылку на wiki.github.com Какая разница устанавливать will_paginate как gem или как плагин? |
| Автор: Лена 21.12.2009, 14:47 |
>gem -v 1.1.1 >gem install rubygems-update Bulk updating Gem source index for: http://gems.rubyforge.org/ Bulk updating Gem source index for: http://gems.rubyforge.org/ ERROR: Error installing rubygems-update: rubygems-update requires builder (>= 0) > |
| Автор: source777 21.12.2009, 15:32 |
Это уже более тяжелый случай, надо переустанавливать RubyGems вручную, ну или воспользоваться чем-нибудь вроде http://bitnami.org/stack/rubystack. |
| Автор: Лена 21.12.2009, 16:47 |
| Импортировала свой проект из 3dRails 1.2 в 3dRails 2.0. Протокол в этой среде у меня получился такой: >gem -v 1.2.0 >gem install rubygems-update Successfully installed rubygems-update-1.3.5 1 gem installed Installing ri documentation for rubygems-update-1.3.5... Installing RDoc documentation for rubygems-update-1.3.5... Could not find main page README Could not find main page README Could not find main page README Could not find main page README >update_rubygems Unknown command: 'update_rubygems' >gem install will_paginate Successfully installed will_paginate-2.3.11 1 gem installed Installing ri documentation for will_paginate-2.3.11... Installing RDoc documentation for will_paginate-2.3.11... > Судя по всему will_paginate установился. |
| Автор: shine 21.12.2009, 17:18 | ||
| Цитата официальной инструкции по will_paginate: To enable the library your Rails 2.0.x or 1.2.x project, require it in “config/environment.rb”
Это было сделано? |
| Автор: Лена 21.12.2009, 18:26 |
| Нет глубокого понимая как адаптировать эту штуку под мой код... Вроде все сделала, но естественно у меня не работает. class Product < ActiveRecord::Base has_many :line_items cattr_reader :per_page @@per_page = 10 def self.find_products_for_sale find(:all, :order => "title") end И т.д. def index @board = Product.find_products_for_sale @posts, @page = Product.paginate_all_by_ board _id(@board.id, :page => params[:page]) end Добавила: require "will_paginate" А в представлении добавила: <%= will_paginate @posts %> Ошибка: undefined method `paginate_all_by_ board _id' for Product:Class Я не понимаю как правльно строиться эта строка: Product.paginate_all_by_ board _id Думала так: Product.paginate_all_by_ product _id то же самое... |
| Автор: source777 21.12.2009, 19:15 | ||||
А у тебя есть такая странная необходимость? В 99.9% случаев достаточно просто использовать gem согласно документации, а не адаптировать его под что-то...
Лен, скажи честно, ты по-английски хорошо понимаешь? Почему ты берёшь кусок из документации в котором описывается как можно передавать paginate параметры аналогично find и конструировать аналогичные мета-методы, когда тебе достаточно самого простого варианта использования:
? |
| Автор: Лена 21.12.2009, 19:39 |
Этот вариант я пробовала: undefined method `paginate' for Product:Class Добавлено через 4 минуты и 26 секунд Ошибка пропала после перезапуска сервера... Однако никакого разбияния страниц внизу не наблюдаю... |
| Автор: source777 21.12.2009, 19:54 |
А у тебя точно есть более 10 продуктов? Добавлено через 58 секунд С какой стати @posts, вместо @products? |
| Автор: Лена 21.12.2009, 20:10 |
| Все, вроде заработало. @products = Product.paginate :page => params[:page], :order => 'title', :per_page => 10 <%= will_paginate @products %> И на русском: в environment.rb в самый низ пишем WillPaginate::ViewHelpers.pagination_options[:prev_label] = '<< Предыдущая' WillPaginate::ViewHelpers.pagination_options[:next_label] = 'Следующая >>' Это рекомендуют писать в initializers/will_paginate.rb но я такого файла в своем дереве не обнаружила... |
| Автор: Лена 21.12.2009, 20:47 |
| Как можно улучшить код? Если перейти по ссылке внизу пагинатора, то ссылка будет http://localhost:3000/store?page=2 Если пользователь в строке адреса напишет так: http://localhost:3000/store?page=vv то будет ошибка. Как ее перехватить? |
| Автор: source777 21.12.2009, 21:54 | ||||||
Ну так создай. Ты ведь читала про http://guides.rubyonrails.org/configuring.html#using-initializers? Инициализатором может быть любой rb-файл в этой папке. |
| Автор: Лена 21.12.2009, 22:07 |
| Большое спасибо! Очень красивое решение! |
| Автор: AndreyDr 21.1.2011, 19:24 |
| Здравствуйте, я установил и настроил will_paginate, но хочется чтобы url был вида /page/1, вместо /articles?page=1. Если кто уже решал такой вопрос, подскажите пожалуйста или дайте ссылку на туториал. Заранее спасибо Модератор: Пожалуйста, один топик - один вопрос, один топик - один топикстартер. Создай новую тему для своего вопроса. |