很抱歉这个简单的问题,但我被困在这里。
我正在尝试创建一个辅助方法,它只是为每个对象打印我的表“Term”的属性“name”。
我试过了:
def display_name(terms)
terms.each do |term|
p term.name
end
end
但是不是打印每个对象名称,而是为每个具有所有属性的对象打印一个数组。
举个例子:
[#<Term id: 1, name: "test", definition: "first definition", created_at: "2011-07-21 14:52:12", updated_at: "2011-07-21 14:52:12">,
#<Term id: 2, name: "second test", definition: "blabla", created_at: "2011-07-20 18:00:42", updated_at: "2011-07-20 18:04:15">
我试图找到我可以用文档做什么(content_tag,concat,collect)但它似乎没有提供我想要的结果..
感谢您的解释
答案 0 :(得分:4)
之所以这样,是因为它实际上并没有打印名称,而是从terms.each返回值,因为那是方法中的最后一个语句。
我可能会使用map
方法首先将所有名称收集到一个数组中,如果你想要一个String而不是一个数组,那么我会join
使用任何首选的分隔符,比如这样:
def display_name(terms)
terms.map(&:name).join ", "
end
如果您愿意,还可以添加一个参数来选择分隔符。像这样:
def display_name(terms, sep = ", ")
terms.map(&:name).join sep
end
# in view
display_name(collection, "<br/>")
默认情况下,它会使用逗号分隔它们,但您可以手动选择其他内容。