CONCAT_WS для Rails? - PullRequest
       29

CONCAT_WS для Rails?

0 голосов
/ 24 ноября 2010

Независимо от того, какой язык я использую, мне всегда нужно отображать список строк, разделенных каким-либо разделителем.

Допустим, у меня есть коллекция продуктов, и мне нужно отобразить ее названия, разделенные ', '. Итак, у меня есть коллекция продуктов, каждый из которых имеет атрибут name. Я ищу какой-нибудь метод / помощник по Rails (если он не существует, может быть, вы можете дать мне идеи для его построения рельсовым способом), который получит коллекцию, атрибут / метод, который будет вызываться для каждого элемента коллекции и строка для разделителя.

Но я хочу что-то, что не включает разделитель в конце, потому что я буду заканчивать словами «Ноутбук, Компьютер, Клавиатура, Мышь», чтобы там не было двух последних символов.

Ex:

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

Предположим, у @products есть 4 продукта с такими названиями.

Спасибо!

Ответы [ 3 ]

1 голос
/ 24 ноября 2010
@products.map(&:title).join(', ')
1 голос
/ 24 ноября 2010

Как уже упоминалось @VP, Array # to_sentence хорошо выполняет эту работу в рельсах. Код для этого здесь:

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

Сказать, что использование Оксфордской запятой сомнительно: -)

1 голос
/ 24 ноября 2010

вам следует попробовать помощник to_sentence.

Если у вас есть массив, вы можете сделать что-то вроде

array.to_sentence.Если в вашем массиве есть данные банан, яблоко, шоколад, то он станет: банан, яблоко и шоколад.

Так что теперь, если у вас есть модель AR с именем поля, вы можете сделать что-то вроде

MyModel.all.map { |r| r.name }.to_sentence
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...