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 }
因为我有同样的问题,所以我必须先计算它们,或者确保它不是最后一项,然后我在它们之间放一个逗号,或者只提取导演名称并将它们放入字符串或类似的东西中。如果我可以加入,那就太好了。
答案 0 :(得分:5)
如果数组中只有一个元素,Ruby的join
方法将不会添加分隔符。
您应该能够对以下任何大小的列表执行以下操作:
@dvd.director.map(&:director).join(", ")