2010-11-23 2 views
0

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

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

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

Ex:

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

, предполагающей @products имеет 4 продуктов, с тем, что имена, конечно.

Спасибо!

ответ

1

вы должны попробовать помощника to_sentence.

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

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

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

MyModel.all.map { |r| r.name }.to_sentence 
+0

Мне нравится помощник to_sentence, но как я могу сделать массив названий продуктов, имеющим массив полных объектов AR, исходящих из отношения has_many? – emzero 2010-11-23 22:30:37

+0

Я обновил свой ответ :-) – 2010-11-24 09:56:42