Ruby on rails Ruby/Rails-。每个迭代器在循环结束时打印整个数组

Ruby on rails Ruby/Rails-。每个迭代器在循环结束时打印整个数组,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我想我想做的很简单,我真的不知道为什么这不起作用。我使用的是Rails 3 本质上,我只是尝试从现有模型中的列中选择不同的值,并将它们全部打印出来。在大多数情况下,这是可行的,但在我的视图中,每个循环最后也会在循环的末尾打印整个数组 我创建了一个称为景点的模型,每个景点现在都有一个类别。为了简单起见,类别在数据库中是硬编码的 这是吸引模型和一个类方法,所有类别都定义了 class Attraction < ActiveRecord::Base def self.all_categor

我想我想做的很简单,我真的不知道为什么这不起作用。我使用的是Rails 3

本质上,我只是尝试从现有模型中的列中选择不同的值,并将它们全部打印出来。在大多数情况下,这是可行的,但在我的视图中,每个循环最后也会在循环的末尾打印整个数组

我创建了一个称为景点的模型,每个景点现在都有一个类别。为了简单起见,类别在数据库中是硬编码的

这是吸引模型和一个类方法,所有类别都定义了

class Attraction < ActiveRecord::Base

  def self.all_categories
    Attraction.select("DISTINCT category")
  end

end
显然,我是Ruby/Rails新手,我一直在尝试寻找解决方案。有什么明显的东西我遗漏了吗

谢谢你的帮助

# Change this line with an =:
<%= @categories.each do |c| %>
# ...to this:
<%  @categories.each do |c| %>

您只希望对每个方法的块产生副作用,而不希望对返回值进行插值。

这是因为当您这样做时会发生这种情况

def self.all_categories
  Attraction.select("DISTINCT category")
end
创建一个吸引对象,其属性由场定义。你能行

def self.all_categories
  Attraction.select("DISTINCT category").map(&:category)
end

虽然我必须结合DigitalRoss建议的解决方案来避免最后的阵列打印,但这也很有效。谢谢也有同样的问题,最后放弃了,在谷歌上搜索我的问题,希望出现stackoverflow线程。这解决了我的问题。在我的例子中,我使用HAML,所以change=解决了我的问题。谢谢
Architecture
Art
Fashion
Music
# Change this line with an =:
<%= @categories.each do |c| %>
# ...to this:
<%  @categories.each do |c| %>
def self.all_categories
  Attraction.select("DISTINCT category")
end
def self.all_categories
  Attraction.select("DISTINCT category").map(&:category)
end