CONCAT_WS для Rails?
Независимо от того, какой язык я использую, мне всегда нужно отображать список строк, разделенных каким-либо разделителем.
Допустим, у меня есть коллекция продуктов, и мне нужно отобразить ее названия, разделенные ', '
, Итак, у меня есть коллекция продуктов, каждый из которых имеет атрибут "имя". Я ищу какой-нибудь метод / помощник по Rails (если он не существует, может быть, вы можете дать мне идеи для его построения рельсовым способом), который получит коллекцию, атрибут / метод, который будет вызываться для каждого элемента коллекции и строка для разделителя.
Но я хочу что-то, что не включает разделитель в конце, потому что я закончу "Ноутбук, Компьютер, Клавиатура, Мышь", чтобы не было двух последних символов.
Пример:
concat_ws(@products, :title, ", ")
#displays: Notebook, Computer, Keyboard, Mouse
Предположим, что у @products есть 4 продукта с такими названиями.
Спасибо!
3 ответа
Вы должны попробовать помощник to_sentence.
Если у вас есть массив, вы можете сделать что-то вроде
array.to_sentence. Если в вашем массиве есть данные банан, яблоко, шоколад, то он станет: банан, яблоко и шоколад.
Так что теперь, если у вас есть модель AR с именем поля, вы можете сделать что-то вроде
MyModel.all.map { |r| r.name }.to_sentence
Как уже упоминалось @VP, Array#to_sentence хорошо выполняет эту работу в рельсах. Код для этого здесь:
Сказав это, использование Оксфордской запятой сомнительно:-)