Ruby数组只存储最后一个值,而不是所有值

时间:2015-12-02 23:38:23

标签: ruby-on-rails arrays loops

我有一个包含产品和类别的Ruby应用程序。

我想有一个类别索引页面,每个类别显示1张产品照片。

现在,它会显示所有类别的最后产品照片。 (因此,对于16个类别,它会显示每个类别的类别16的产品照片。)

我想我需要修复我存储或调用Products数组的方式。我该怎么做?

代码 -

在categories_controller.rb

def index
  @categories = Category.all.order('name ASC')
  @products = []

  @categories.each do |category|
    @products = Product.where(category_id: category.id).take(1)
  end
end

in categories / index.html.erb

<% @categories.each do |category| %>
    <% @products.each do |product| %>
      <%= link_to image_tag(product.image), category %>
    <% end %>
  <%= link_to category.name, category %>
  <%= category.description %>

1 个答案:

答案 0 :(得分:0)

index操作中,更改行:

@products = Product.where(category_id: category.id).take(1)

致:

@products << Product.where(category_id: category.id).take(1)

<强>更新

由于take(1)将返回数组中的对象,因此您只需将其更改为:

@products << Product.where(category_id: category.id).take