【问题标题】:How Do You Insert An Additional Key/Value To An Array of Objects in Rails?如何在 Rails 中的对象数组中插入额外的键/值?
【发布时间】:2013-05-29 15:55:08
【问题描述】:

由于必须通过 cookie 存储进行一些花哨的搜索,我有一个 (Model) 对象数组。

@ads 包含

[{:id => 9283
:name => "Name Here"
:price => 2000
:phone => "999-999-9999"
}]

等,用于多个对象。因此,一个二维数组(当然,真的很像一个 Hash,但 Rails 在 Arrays 中处理它时使用的 find() 和 find_all_by() 方法。

我需要做的是,在给定的广告页面上,将单个对象标记为“当前”广告,以便可以在视图中这样表示。

我已经用

隔离了它
@ads.select {|a| a[:id] == id}

但如果我尝试

@ads.select {|a| a[:id] == id}.push :current => true

我似乎最终在该对象元素内添加了一个新元素,如下所示:

@ads 然后包含

[{:id => 9283
:name => "Name Here"
:price => 2000
:phone => "999-999-9999"},
{:current=>true}]

如何将其添加到所选对象的现有属性中,以便通过视图中的简单 ad[:current] 访问它?我应该循环吗?

【问题讨论】:

    标签: ruby-on-rails arrays activerecord hash insert-update


    【解决方案1】:

    select 正在返回一个数组,但您希望数组中有一个特定的哈希值,因此请使用 find。现在您正在处理哈希,您不需要push,而是merge

    @ads.find {|a| a[:id] == id}.merge! :current => true
    

    【讨论】:

    • 太棒了!!!正是我需要的;非常感谢您的快速回答!你摇滚。
    猜你喜欢
    • 2020-03-30
    • 2017-01-20
    • 2013-07-05
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多