Rails用part中的逗号分隔数组项

时间:2012-02-20 12:18:32

标签: ruby-on-rails-3.1

Rails在部分内部创建逗号分隔列表的最优雅方式是什么?

我刚刚发现你可以使用partials迭代从另一个视图模板发送的集合。所以在视图模板中我有:

<% render @dvd.director %> 

然后在/view/directors/_director.html.erb中:

<%= director.director %>

这实际上是这样的:

@dvd.director.each { |d| puts d.director }

现在,我知道我可以像这样使用.join:

<% @dvd.director.map { |t| t.director }.join(", ") %>

但是由于部分已经遍历了数组中的每个条目,我如何正确地分离列表而不是最后一个(或单个)具有丑陋的逗号?

很多参赛作品只有一名导演,我只是想把那些合适的导演分开。我知道我可以手动完成所有这些操作(使用正常的,非迭代的部分并自己创建.each循环),但我正在尝试这样做,并学习Rails方式。

感谢。

修改

为了更好地解释,@ dvd.director返回一个ActiveRelation对象,如下所示:

[#<Director id: 13, director: "Andrew Stanton">, #<Director id: 14, director: "Lee Unkrich">]

所以我不能只做@dvd.director.join(', ')

除了

之外还有另一种获取数据的方法吗?
@dvd.director.each { |dir| dir.director }

因为我有同样的问题,所以我必须先计算它们,或者确保它不是最后一项,然后我在它们之间放一个逗号,或者只提取导演名称并将它们放入字符串或类似的东西中。如果我可以加入,那就太好了。

1 个答案:

答案 0 :(得分:5)

如果数组中只有一个元素,Ruby的join方法将不会添加分隔符。

您应该能够对以下任何大小的列表执行以下操作:

@dvd.director.map(&:director).join(", ")