如何从 Rails 中的哈希中提取值
How to extract value from hash in Rails
我有一个哈希,需要使用其中一个变量的值年份
例子是:
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>
我不明白为什么
如果您尝试获取关键年份的值并且您的散列是@values_project,那么您将使用
@values_project[:year]
因为它是对象数组,所以使用
@values_project.each do |value_project|
value_project.year
end
或
@values_project.first.year
@value_hash
不是 hash
,而是 ActiveRecord::Relation
(如错误所述)。
在您的示例中,@value_hash
只有一个成员。要获取该成员,它是 class CustomValue
的实例(仍然不是 hash
!),您可以执行以下操作:
custom_value = @value_hash.first
然后,要获取年份,您可以这样做:
custom_value.year
或者,您可以一次性完成:
@value_hash.first.year
Sachin R 说的很长(所以你应该接受他们的回答)。
您也可以尝试以下方法:
@value_project[0].year
我有一个哈希,需要使用其中一个变量的值年份 例子是:
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>
我不明白为什么
如果您尝试获取关键年份的值并且您的散列是@values_project,那么您将使用
@values_project[:year]
因为它是对象数组,所以使用
@values_project.each do |value_project|
value_project.year
end
或
@values_project.first.year
@value_hash
不是 hash
,而是 ActiveRecord::Relation
(如错误所述)。
在您的示例中,@value_hash
只有一个成员。要获取该成员,它是 class CustomValue
的实例(仍然不是 hash
!),您可以执行以下操作:
custom_value = @value_hash.first
然后,要获取年份,您可以这样做:
custom_value.year
或者,您可以一次性完成:
@value_hash.first.year
Sachin R 说的很长(所以你应该接受他们的回答)。
您也可以尝试以下方法:
@value_project[0].year