0

由于必须通过 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] 访问它?我应该做一个循环吗?

4

1 回答 1

3

select正在返回一个数组,但您想要数组中的特定哈希,所以使用find. 现在您正在处理哈希,您不需要push,但是merge

@ads.find {|a| a[:id] == id}.merge! :current => true
于 2013-05-29T15:58:47.400 回答