用于Rails的CONCAT_WS?

时间:2010-11-23 22:18:39

标签: ruby-on-rails helper concat-ws

无论我使用什么语言,我总是需要显示由某个分隔符分隔的字符串列表。

假设我有一系列产品,需要以', '分隔显示其名称。 所以我有一个产品集合,每个产品都有一个'name'属性。我正在寻找一些Rails方法/帮助器(如果它不存在,也许你可以给我一些想法以rails方式构建它),它将接收一个集合,一个将在每个集合项上调用的属性/方法和分隔符的字符串。

但是我想要的东西不包括最后的分隔符,因为我将以“笔记本,计算机,键盘,鼠标”结尾,最后两个字符不应该在那里。

例如:

concat_ws(@products, :title, ", ")
#displays: Notebook, Computer, Keyboard, Mouse

假设@products有4个产品,当然还有这个名称。

谢谢!

3 个答案:

答案 0 :(得分:1)

你应该尝试帮助to_sentence。

如果您有阵列,可以执行类似

的操作

array.to_sentence。如果你的数组有数据banana,apple,chocolate,它将成为: 香蕉,苹果和巧克力。

现在,如果你的AR模型有一个名为的字段,你可以做类似

的事情
MyModel.all.map { |r| r.name }.to_sentence

答案 1 :(得分:1)

@products.map(&:title).join(', ')

答案 2 :(得分:1)

正如@VP所提到的,Array#to_sentence在rails中做得很好。它的代码在这里:

https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/array/conversions.rb

说,使用牛津逗号是值得怀疑的: - )