2012-08-27 2 views
0

이것은 각 루프의 내용입니다. names.each do | x | . v02를 # {x}로 대체해야하지만 구문에 문제가 있습니다. v02를 x로 대체하는 방법을 알려주세요.Ruby 각 변수 변경 대체

<% @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 %> 
+0

이 모든 것을보기에서 수행하고 있습니까? 그 모든 논리는 모델에서 더 행복하게 살 것입니다 (Name?). 컬렉션을 반복하고 있습니다. 또한 @user는 어떻게 채워 집니까? – Pavling

답변

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) %> 
+0

미안하다, 몰랐다! 감사! –

2

당신은 사용할 수 있습니다 루비는 일반적으로 하나를 오버라이드 (override) 사람에 대해 걱정할 필요가 없습니다 만, 때문에 send

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

또는

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

나는 후자를 선호합니다.

+0

ty! 나는 send (x)를 놓쳤다. –