рельсы MONTHNAMES to_s - PullRequest
       0

рельсы MONTHNAMES to_s

3 голосов
/ 30 октября 2009

это проблема:

внутри библиотеки мне нужно вывести MONTHNAMES в строку

если я попробую

Date::MONTHNAMES.inspect

результат

=> "[ноль, \" январь \ ", \" февраль \ ", \" март \ ", \" апрель \ ", \" май \ ", \" июнь \ ", \" июль \ " , \ "Август \", \ "Сентябрь \", \ "Октябрь \", \ "Ноябрь \", \ "Декабрь \"] "

это хорошо, но мне не нужен первый элемент, поэтому

month_names = Date::MONTHNAMES
month_names.shift
month_names.inspect

но

ActionView::TemplateError (can't modify frozen array) 

есть ли обходной путь? спасибо

Ответы [ 5 ]

9 голосов
/ 02 июня 2014

... также дает вам весь месяц (без первого ноля).

Date::MONTHNAMES.compact
6 голосов
/ 30 октября 2009
Date::MONTHNAMES.slice(1,12).inspect

дает вам весь месяц (без первого nil).

2 голосов
/ 30 октября 2009

Как показано в сообщении об ошибке Date::MONTHNAMES - это замороженный объект, поэтому вы не можете изменить его (shift изменит его, ну, в общем, удалив первый элемент). Вы можете достичь того, что вы хотите:

puts Date::MONTHNAMES[1..-1].inspect

1 голос
/ 31 октября 2009

Хотя решение для индексации срезов / массивов здесь, вероятно, лучше, вы всегда можете дублировать замороженный массив и работать с копией:

month_names = Date::MONTHNAMES.dup
month_names.shift
month_names.inspect

должен дать вам то, что вы хотите.

0 голосов
/ 09 июня 2017

Date::MONTHNAMES.reject{|m| m.nil?}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...