【问题标题】:How to extract value from hash in Rails如何从 Rails 中的哈希中提取值
【发布时间】:2018-02-27 16:59:32
【问题描述】:

我有一个哈希值,需要使用其中一个变量的值 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[:year]

标签: ruby-on-rails hash ruby-2.2


【解决方案1】:

您也可以尝试以下方法:

@value_project[0].year

【讨论】:

    【解决方案2】:

    @value_hash 不是hash,而是ActiveRecord::Relation(如错误所示)。

    在您的示例中,@value_hash 只有一个成员。要获取该成员,它是 CustomValue 类的实例(仍然不是 hash!),您可以这样做:

    custom_value = @value_hash.first
    

    然后,要获得年份,您可以这样做:

    custom_value.year
    

    或者,您可以一次性完成:

    @value_hash.first.year
    

    这与 Sachin R 所说的完全一致(所以你应该接受他们的回答)。

    【讨论】:

      【解决方案3】:

      如果您尝试获取关键年份的值并且您的哈希是@values_project,那么您将使用
      @values_project[:year]

      【讨论】:

        【解决方案4】:

        因为它是这样使用的对象数组

        @values_project.each do |value_project|
          value_project.year
        end
        

        @values_project.first.year
        

        【讨论】:

        • 它不是确切地一个“对象数组”。这是一个ActiveRecord::Relation。但是,嘿,我知道你在说什么。
        猜你喜欢
        • 2020-07-21
        • 1970-01-01
        • 2012-02-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-26
        相关资源
        最近更新 更多