需要一个自我。使用 Acts_as_list 的 Rails 模型上的方法

发布于 2024-08-21 04:17:23 字数 310 浏览 6 评论 0原文

我对 Rails 还比较陌生...我需要在我的产品模型上编写一个 self.method 来查找每个位置的下一个产品。我在页面上显示 1 个产品,并想要列表中的下一个产品。

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

显然这是行不通的...我对写作方法仍然很陌生。有人吗?

我正在使用 Rbates Railscast 147 和 Acts_as_list,我需要弄清楚如何获得下一个产品,

非常感谢

I am still newer to Rails... I need to write a self.method on my Product model to find the next Product per position. I am showing 1 Product on a page, and want the next one in the list.

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

obviously this won't work... I am still new to writing methods. anyone?

I am using Rbates Railscast 147 and Acts_as_list, I need to figure out how to get the next product

thanks so much

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

夏雨凉 2024-08-28 04:17:23

acts_as_list 已经添加了获取下一个和上一个项目的方法,它们称为 higher_item (position - 1) 和 lower_item (position + 1)。但是,它们是实例方法,而不是类方法 (self.),因为要在列表中查找“下一项”,您需要从一项(Product 类的实例)开始,而不是从 Product 类本身开始。

=> p = Product.first
<Product id: 1, position: 1>
=> p.lower_item
<Product id: 2, position: 2>

acts_as_list already adds methods for getting the next and previous items, they are called higher_item (position - 1) and lower_item (position + 1). However, they are instance methods, not class methods (self.) because to find "the next item" in a list, you need to start with an item (an instance of the Product class), not the Product class itself.

=> p = Product.first
<Product id: 1, position: 1>
=> p.lower_item
<Product id: 2, position: 2>
满地尘埃落定 2024-08-28 04:17:23
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)
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)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文