Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.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中更改它_Ruby_Ruby On Rails 3.2 - Fatal编程技术网

在集合中找到某个元素并在Ruby中更改它

在集合中找到某个元素并在Ruby中更改它,ruby,ruby-on-rails-3.2,Ruby,Ruby On Rails 3.2,我需要在@cart.line\u items集合中设置某个项目的数量,其中@cart.line\u item.id==line\u item\u id。我写了一个应该可以工作的代码,但直觉告诉我它会更简单 def line_item_quantity(line_item_id, quantity) @cart.line_items.each {|item| item.quantity = quantity if (item.id == line_item_id)} respond

我需要在
@cart.line\u items
集合中设置某个
项目的
数量
,其中
@cart.line\u item.id==line\u item\u id
。我写了一个应该可以工作的代码,但直觉告诉我它会更简单

def line_item_quantity(line_item_id, quantity)
    @cart.line_items.each {|item| item.quantity = quantity if (item.id == line_item_id)}
    respond_to do |format|
      format.js
    end
end

那么什么是Ruby方法来改进代码呢?

我认为下面的代码应该可以工作,但是如果没有找到行项目,就会引发异常

@cart.line_items.find(line_item_id).quantity = quantity

它很可能不起作用,因为find返回枚举数。另外,
find
将只返回第一个匹配项,而不是全部。您应该设置item.quantity=quantity,而不仅仅是item=quantity。但除此之外,你的方法有什么问题?