这就是问题:
在lib中我需要将MONTHNAMES打印到字符串
如果我尝试
Date::MONTHNAMES.inspect
结果是
=> “[nil,\”1月\“,”2月“,”3月“,”4月“,”5月“,”6月“,”7月“,”8月“ “,”九月“,”十月“,”十一月“,”十二月“,”
这很好,但我不需要第一个元素,所以
month_names = Date::MONTHNAMES
month_names.shift
month_names.inspect
但是
ActionView::TemplateError (can't modify frozen array)
有什么解决方法吗? 感谢
答案 0 :(得分:9)
...也给你所有月份(没有第一个零)。
Date::MONTHNAMES.compact
答案 1 :(得分:6)
Date::MONTHNAMES.slice(1,12).inspect
为您提供所有月份(没有第一个nil
)。
答案 2 :(得分:2)
如错误消息中所示,Date::MONTHNAMES
是一个冻结的对象,因此您无法对其进行修改(shift
将通过移出第一个元素来修改它)。你可以通过以下方式实现目标:
puts Date::MONTHNAMES[1..-1].inspect
答案 3 :(得分:1)
尽管切片/数组索引解决方案在这里可能更好,但您始终可以复制冻结的数组并处理副本:
month_names = Date::MONTHNAMES.dup
month_names.shift
month_names.inspect
应该给你你想要的东西。
答案 4 :(得分:-1)
Date::MONTHNAMES.reject{|m| m.nil?}