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

kak*_*bei 1 ruby-on-rails-3.1

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)

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

Car*_*III 5

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

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

@dvd.director.map(&:director).join(", ")
Run Code Online (Sandbox Code Playgroud)

  • 如果我已经在使用“map(&amp;:director)”,有没有办法在该文件中添加 link_to? (2认同)