Ruby每个循环变量替换

时间:2012-09-09 16:48:29

标签: ruby substitution

我正在尝试将所有值设置为0,但第3行(send(x))给我带来了问题。似乎对我而言,但不起作用。 x是Power中列的汽车和名称。有什么提示吗?

<% @cars.each do |x| %>
  <% @power = Power.find_by_user_id(@user) %>
  <% @power.send(x) = 0 %>
  <% @power.save %>
<% end %>

1 个答案:

答案 0 :(得分:2)

假设@cars包含Power的列名,则需要send setter方法(即最后使用=)。您还需要确保将符号传递给send

@cars.each do |x|
  @power = Power.find_by_user_id(@user)
  @power.send(:"#{x}=", 0)
  @power.save
end

还有一个明显的原因,你需要在循环中设置或保存@power,所以它可能更好:

@power = Power.find_by_user_id(@user)
@cars.each do |x|
  @power.send(:"#{x}=", 0)
end
@power.save