我有一个哈希,需要使用变量中的值年份 例子是:
2.2.4 :001 > @values_project
=> [#<CustomValue id: 20367, customized_type: "Project", customized_id: 492, custom_field_id: 64, year: "2017">]
我需要这一年
所以当我尝试@value_hash.year
收到错误
NoMethodError: undefined method `year' for
#<ActiveRecord::Relation:0x0000000712fb18>
我不明白为什么
答案 0 :(得分:2)
如果您正在尝试获取关键年份的值,并且您的哈希是@values_project,那么您将使用
@values_project[:year]
答案 1 :(得分:1)
因为它是像这样使用的对象数组
@values_project.each do |value_project|
value_project.year
end
或
@values_project.first.year
答案 2 :(得分:1)
@value_hash
不是hash
,而是ActiveRecord::Relation
(如错误所述)。
在您的示例中,@value_hash
只有一个成员。要获取该成员,该成员是类CustomValue
的实例(仍然不是hash
!),您可以执行以下操作:
custom_value = @value_hash.first
然后,为了获得这一年,你可以做到:
custom_value.year
或者,您可以一次性完成:
@value_hash.first.year
这只是一个很长的方式来说明Sachin R所说的内容(所以你应该接受他们的回答)。
答案 3 :(得分:0)
您也可以尝试以下方式:
@value_project[0].year