rails MONTHNAMES to_s

时间:2009-10-30 09:16:51

标签: ruby-on-rails ruby

这就是问题:

在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) 

有什么解决方法吗? 感谢

5 个答案:

答案 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?}