Нужна личность. метод в модели Rails с использованием Acts_as_list - PullRequest
1 голос
/ 12 февраля 2010

Я все еще новичок в Rails ... Мне нужно написать self.method в моей модели Продукта, чтобы найти следующий Продукт на позицию. Я показываю 1 товар на странице и хочу следующий в списке.

def self.next_product
product = Product. # current product.position +1
end

очевидно, что это не сработает ... Я все еще новичок в написании методов. кто-нибудь? * * 1004

Я использую Rbates Railscast 147 и Acts_as_list, мне нужно выяснить, как получить следующий продукт

Большое спасибо

Ответы [ 2 ]

1 голос
/ 12 февраля 2010

acts_as_list уже добавляет методы для получения следующего и предыдущего элементов, они называются upper_item (позиция - 1) и lower_item (позиция + 1). Однако они являются методами экземпляра, а не методами класса (self.), Поскольку для поиска «следующего элемента» в списке необходимо начать с элемента (экземпляра класса Product), а не с самого класса Product.

=> p = Product.first
<Product id: 1, position: 1>
=> p.lower_item
<Product id: 2, position: 2>
  • См. Документацию acts_as_list для описания методов, добавляемых в ваш класс.
  • См. в этом блоге для описания методов класса и экземпляра в Ruby.
0 голосов
/ 14 мая 2010
class Product
 def next_product
   lower_item or self
 end
 def previous_product
   higher_item or self
 end
end

link_to "Next", product_path(@product.next_item) 

link_to "Previous", product_path(@product.previous_item)
...