在集合中找到某个元素并在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。但除此之外,你的方法有什么问题?