2016-03-14 3 views
0

Я хочу удалить последнюю запятую в массиве. Например, self.committed.join(', ').titleize производит «Солнце, Пн, Вт, Ср, Чт, Пт, Сб».Удалить последнюю запятую из serialized array.join (',')?

Я не знаю, если ответ как-то удаление пустой "" в конце массива ["sun", "mon", "tue", "wed", "thu", "fri", "sat", ""], так что, как я могу использовать to_sentence и не выйдет, глядя, как это «Вс, Пн, Вт, Ср , Thu, Fri, Sat, And "

Или если есть способ с join для предотвращения дополнительной запятой?

модель

serialize :committed, Array 

дб

t.text  "committed",  default: "---\n- sun\n- mon\n- tue\n- wed\n- thu\n- fri\n- sat\n" 

Я не хочу, чтобы изменить serialize или db, но я открыт к нему в качестве последнего средства.

ответ

3

Это не понятно, почему массив имеет пустую строку в качестве последнего элемента, но это легко пропустить:

self.committed[0..-2].to_sentence.titleize 

Или:

self.committed.reject(&:blank?).to_sentence.titleize 

Последние будут пропускать все пустые элементы, тогда как первый пропустит последний элемент независимо от его содержимого.

Если вы хотите индивидуально капитализировать слова перед вызовом to_sentence (чтобы избежать «и» быть капитализированы), просто использовать map:

self.committed[0..-2].map(&:titleize).to_sentence 
+0

спасибо Джордан, я не знаю, почему либо, странно! Вы удалили последнюю запятую, но теперь она назвала слово «И» тоже. Вы знаете, как создать исключение для «И»? –

+1

Я обновил свой ответ с решением для этого. –