Ruby每次都做变量替换

时间:2012-08-27 01:30:59

标签: ruby each

这是每个循环的内容,names.each do | x | 。我需要用#{x}替换v02但是语法有问题。请告诉我如何用x替换v02。

<% @a = Count.find_by_user_id(@user) %>
<% @b = @a.v02 %>
<% @c = @b * 1.0 %>
<% @d = Carpart.find_by_part("v02") %>
<% @e = @d.requirement %>
<% @f = @c / @e %>
<% @g = @f * 100 %>
<% @h = [@g, 100].min %>
<% @i = Percentage.find_by_user_id(@user) %>
<% @i.update_attribute(:v02, @h) %>
V02 <%= @i.v02 %>%
<% @v02 = @i.v02 %>

2 个答案:

答案 0 :(得分:3)

不完全确定这是不是你的意思,但是......你的意思是这样吗?

<% @a = Count.find_by_user_id(@user) %>
<% @b = @a.send(x) %>
<% @c = @b * 1.0 %>
<% @d = Carpart.find_by_part("#{x}") %>
<% @e = @d.requirement %>
<% @f = @c / @e %>
<% @g = @f * 100 %>
<% @h = [@g, 100].min %>
<% @i = Percentage.find_by_user_id(@user) %>
<% @i.update_attribute(x.to_sym, @h) %>
x <%= @i.send(x) %>%
<% @x = @i.send(x) %>

答案 1 :(得分:2)

您可以使用Ruby的send

<% @b = @a.send(x) %>

<% @b = @a.__send__(x) %>

我更喜欢后者,因为你通常不必担心任何人压倒那个人。