0

すべての値を 0 に設定しようとしていますが、3 行目 ( send(x)) で問題が発生しています。私には正しいようですが、うまくいきません。xPower の列の車と名前です。任意のヒント?

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

1 に答える 1

2

@carsの列名が含まれていると仮定すると、setter メソッド (つまり、最後に an を使用)Powerが必要です。また、シンボルを に渡していることを確認する必要があります。send=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
于 2012-09-09T16:53:59.360 に答える