Pregunta

No importa qué idioma estoy usando Siempre necesito para mostrar una lista de cadenas separadas por algún delimitador.

digamos Vamos, tengo una colección de productos y necesidad de mostrar sus nombres separados por ', '. Así que tengo una colección de productos, donde cada uno tiene un atributo 'nombre'. Estoy buscando algún método de rieles / ayudante (si no existe, tal vez usted me puede dar ideas para construirlo en un camino carriles) que recibirá una colección, un atributo / método que se llama en cada elemento de la colección y una cadena para el separador.

Pero yo quiero algo que no incluye el separador al final, porque voy a terminar con "portátil, ordenador, teclado, ratón," que 2 últimos caracteres no deben estar allí.

Ejemplo:

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

Suponiendo @products dispone de 4 productos con que los nombres de curso.

Gracias!

¿Fue útil?

Solución

que debe tratar la to_sentence ayudante.

Si usted tiene una matriz, se puede hacer algo como

array.to_sentence. Si la matriz tiene el plátano de datos, manzana, chocolate se convertirá en: plátano, manzana y chocolate.

Así que ahora si usted tiene su modelo AR con un campo de nombre, se podría hacer algo como

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

Otros consejos

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

Como se mencionó @VP, Array # to_sentence hace este trabajo bien en los carriles. El código para ello está aquí:

https: // github. com / carriles / carriles / blob / master / ActiveSupport / lib / active_support / core_ext / matriz / conversions.rb

Dicho esto, su uso de la Oxford Comma es cuestionable: -)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top