Rails编码链接到下一个排名的供应商

时间:2015-06-25 07:21:05

标签: ruby-on-rails

我绕圈子,希望有人可以帮助我...

我的rails应用程序有一个供应商模型(supplier.rb)。

每个供应商都有一个展示页面(suppliers / show.html.haml)。每个供应商也被排名(即排名与其他供应商相比)。我的目标是让每个供应商/ show.html.haml页面显示指向下一个排名的供应商/ show.html.haml页面的链接。

在supplier.rb中:

def rank_for_category(category)
  Supplier.for_category(self.category).order_by_rating.index(self)
end

def next_rank_supplier
  Supplier.for_category(self.category).order_by_rating.index(self) + 1
end

在suppliers / show.html.haml中:

%p View the #{@supplier.next_rank_as_text}th ranked #   {@supplier.category.name}    in the UK 
    = link_to 'next rank', supplier_path(@supplier.next_rank_supplier)

这不对。也许我需要另一个功能来获得@ supplier.next_rank_supplier吗?

希望有人可以提供帮助。谢谢。

2 个答案:

答案 0 :(得分:1)

您可以访问数组中的下一个元素。

def self.ordered_suppliers(category)
  for_category(category).order_by_rating
end

def rank
  Supplier.ordered_suppliers(self.category).index(self)
end

def next_rank_supplier
  Supplier.ordered_suppliers(self.category)[rank+1]
end

答案 1 :(得分:0)

嗯,这种方法似乎没有返回供应商,它似乎返回排名。您尚未显示供应商型号,因此我无法为您编写新方法。

def next_rank_supplier
  Supplier.for_category(self.category).order_by_rating.index(self) + 1
end