每个循环更改变量数据

时间:2013-12-11 14:17:10

标签: ruby-on-rails ruby

好吧,让我改变整个事情并准确显示我想要的输出,对不起解释。

<table class="table table-bordered table-custom table-striped"> 
    <% 0.upto(years).each do |n| %>
      <% @value = (((price*quantity)*percentage)/100)+(quantity*price) %>
      <tr>
        <td width="20%"><%= n %></td>
        <td width="20%"><%= ((@value*percentage)/100)+@value %></td> 
      </tr>
    <% end %> 
</table>

我正在试图弄清楚如何将@value变量设置为从该循环中的一个calucated获取的新值。

我的输出atm看起来像这样:

0   @value

1   @value

2   @value

但我希望它看起来像这样:

0   @value

1   new_value calculated from ((@value*percentage)/100)+@value

2   new_value2 calculated from ((new_value*percentage)/100)+new_value

我知道这仍然看起来像废话,但我希望我这次试图解释我想做什么; p

感谢。

3 个答案:

答案 0 :(得分:0)

在ruby中,您可以使用print variable打印变量(最后不会添加新行),也可以使用puts添加新行puts variable。如果您尝试连接字符串,可以print "#{var1} and #{var2}"

结帐 http://tryruby.org

https://www.codeschool.com/courses/try-ruby

答案 1 :(得分:0)

我想你想要这样的东西:

<table class="table table-bordered table-custom table-striped">
  <% @value = price * quantity %> 
  <% 0.upto(years).each do |n| %>
    <% @value += ((@value * percentage)) / 100 %>
    <tr>
      <td width="20%"><%= n %></td>
      <td width="20%"><%= @value %></td> 
    </tr>
  <% end %> 
</table>

当每年增加一个固定百分比时,这将使您的价格增加(或减少)。

答案 2 :(得分:0)

使用reduce而不是每个都积累中间值。

<table class="table table-bordered table-custom table-striped">
  <% 0.upto(years).reduce(price * quantity) do |value, n| %>
    <tr>
      <td width="20%"><%= n %></td>
      <td width="20%"><%= value %></td> 
    </tr>
    <% value += ((value * percentage)) / 100 %>
  <% end %> 
</table>