我試圖將所有值設置爲0,但第三行(send(x)
)給我帶來了問題。看起來對我來說很合適,但不起作用。 x
是Power中列車的名稱和名稱。有小費嗎?Ruby每個循環變量替換
<% @cars.each do |x| %>
<% @power = Power.find_by_user_id(@user) %>
<% @power.send(x) = 0 %>
<% @power.save %>
<% end %>
我試圖將所有值設置爲0,但第三行(send(x)
)給我帶來了問題。看起來對我來說很合適,但不起作用。 x
是Power中列車的名稱和名稱。有小費嗎?Ruby每個循環變量替換
<% @cars.each do |x| %>
<% @power = Power.find_by_user_id(@user) %>
<% @power.send(x) = 0 %>
<% @power.save %>
<% end %>
假設@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
訪問動態屬性名稱的唯一方法是嗎? 'ActiveRecord'類是否有像'@ power.get_attribute_by_name(x)'這樣的方法? – galymzhan
@galymzhan有'write_attribute',但會繞過模型中的任何自定義寫入器。 –
謝謝安德魯,我將把大部分內容移到控制器上 –
究竟什麼是汽車的價值? – weexpectedTHIS
你是什麼意思「所有的價值」?此外,這應該*絕對*不在視圖中(假設這是類似Rails的)。 –
說@cars數組包含c01 c02 c03等,這些是列的名字 –