Rails在部分内部创建逗号分隔列表的最优雅方式是什么?
我刚刚发现你可以使用partials迭代从另一个视图模板发送的集合.所以在视图模板中我有:
<% render @dvd.director %>
Run Code Online (Sandbox Code Playgroud)
然后在/view/directors/_director.html.erb中:
<%= director.director %>
Run Code Online (Sandbox Code Playgroud)
这实际上做了类似的事情:
@dvd.director.each { |d| puts d.director }
Run Code Online (Sandbox Code Playgroud)
现在,我知道我可以像这样使用.join:
<% @dvd.director.map { |t| t.director }.join(", ") %>
Run Code Online (Sandbox Code Playgroud)
但是由于部分已遍历数组中的每个条目,我如何正确地分离列表而不是最后一个(或单个一个)在末尾有一个丑陋的逗号?
很多条目只有一个导演,我只是想把那些有多个导演分开.我知道我可以手动完成所有这些操作(使用正常的,非迭代的部分并自己创建.each循环),但我正在尝试这样做,并学习Rails方式.
谢谢.
编辑
为了更好地解释一下,@ dvd.director返回一个ActiveRelation对象,如下所示:
[#<Director id: 13, director: "Andrew Stanton">, #<Director id: 14, director: "Lee Unkrich">]
Run Code Online (Sandbox Code Playgroud)
所以我不能这样做 @dvd.director.join(', ')
有没有其他方法可以获得除此之外的数据
@dvd.director.each { |dir| dir.director }
Run Code Online (Sandbox Code Playgroud)
因为我有同样的问题,我必须计算它们或确保它不是最后一项,然后我在它们之间放一个逗号,或者只提取导演名称并将它们放入字符串或类似的东西.如果我可以加入,那就太好了.
join如果数组中只有一个元素,Ruby的方法将不会添加分隔符.
您应该能够执行以下任何大小的列表:
@dvd.director.map(&:director).join(", ")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1847 次 |
| 最近记录: |