Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 迭代数组,调整一个虚拟属性并返回带有调整值的数组_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 迭代数组,调整一个虚拟属性并返回带有调整值的数组

Ruby on rails 迭代数组,调整一个虚拟属性并返回带有调整值的数组,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个rails类,称为标记: class Tag < ActiveRecord::Base attr_accessor :is_enabled_on_item # a virtual attribute for ouptutting json 要得到像: [ { tagid:1, phrase: "blue", is_enabled_on_item: true }, { tagid:2, phrase

我有一个rails类,称为标记:

class Tag < ActiveRecord::Base
  attr_accessor :is_enabled_on_item # a virtual attribute for ouptutting json
要得到像:

[
   {
      tagid:1,
      phrase: "blue",
      is_enabled_on_item: true 
   },
   {
      tagid:2,
      phrase: "yellow",
      is_enabled_on_item: false 
   }
]
我试着收集

t.collect { |tmp| tmp.is_enabled_on_item=true if current_tag_ids.include?(tmp.tagid) }
但是它返回了
[对,错]
。我将如何实现我想要的

编辑#1 我希望它返回一个标签数组

这样做可能会奏效,但中介
arr
似乎没有必要:

arr=[]
t.each do |tmp| 
  tmp.is_enabled_on_item=current_tag_ids.include?(tmp.tagid)
  arr << tmp
end  
arr
arr=[]
t、 每一个都做| tmp |
tmp.is_enabled_on_item=当前标签ID.include?(tmp.tagid)

arr您对collect的看法几乎正确,请尝试以下方法:

t.collect { |tmp| tmp.is_enabled_on_item=current_tag_ids.include?(tmp.tagid); tmp }
注意,赋值返回赋值,而为了收集标记,必须在块中返回标记

最好向前迈进一步,使用更规范的方法和参数名称:

tags.map { |tag| tag.is_enabled_on_item=current_tag_ids.include?(tag.tagid); tag }

隐马尔可夫模型。。。看起来它将返回一个哈希数组,而不是一个tagsIt数组,它将返回您所请求的。。散列数组
t.collect { |tmp| tmp.is_enabled_on_item=current_tag_ids.include?(tmp.tagid); tmp }
tags.map { |tag| tag.is_enabled_on_item=current_tag_ids.include?(tag.tagid); tag }