Hi all.. I am trying to generate a report which has multiple columns.. After rendering the report I allow the user to enter a value which is to be subtracted from the column which is already rendered.. I have multiple rows.. so I have tries like the following. My views page is
<script> function sum() { var txtFirstNumberValue = document.getElementById('txt1').value; var txtSecondNumberValue = document.getElementById('txt2').value; var result = parseFloat(txtFirstNumberValue) - parseFloat(txtSecondNumberValue); if(!isNaN(result)) { document.getElementById('txt3').value = result; } } </script> <% @arr.each do |j| %> <% @q = %> <% t= 0 %> <%= form_for ProductionReport.new ,:url=>{:controller=>"users",:action=>"rate_per_unit_report" } do |i| %> <tr> <td><%= j[0] %></td> <td><%= j[1] %></td> <td><%= j[2] %></td> <% @q << j[3] %> <td><%= i.text_field j[3], :value=>@q[t], :id=>"txt1", :onkeyup=>"sum()", :class=>"txt" %></td> <td><%= i.text_field :selling_price, :id=>"txt2", :onkeyup=>"sum()", :class=>"txt" %></td> <td><%= i.text_field :profit_loss, :id=>"txt3", :class=>"txt", :readonly =>true %></td> <% end %> <% t = t+1 %> <% end %> <td>total</td> <td><%= @total %></td> <td><%= @total1 %></td> <td><%= @total2 %></td>
My controller is
def rate_per_unit_report @user=User.new @user = User.find(session[:user_id]).name @rpus = params[:production_report][:intial_date] @rpue = params[:production_report][:final_date] @production_report = ProductionReport.where(:date => @rpus..@rpue) @production = @production_report.select(:finished_goods_name).uniq @arr= g = 0 @production.each do|i| @p = @production_report.pluck(:issue_id) @ll = @production_report.where(:finished_goods_name=>i.finished_goods_name).select(:total_no_of_items_produced).sum :total_no_of_items_produced @k = Issue.where(:id=>@p).pluck(:consolidated_cost) @rate = @k[g].to_f / @ll.to_f @r = @rate.round(2) @arr<<[i.finished_goods_name]+[@ll]+ [@k[g]] + [@r] g = g+1 end @total=@arr.inject(0){|sum,x| sum + x[1].to_i } @total1=@arr.inject(0){|sum,y| sum + y[2].to_i } @total2=@arr.inject(0){|sum,z| sum + z[3].to_i } end
And my sample output page is attached as an image.. Pls look at it..
Shortly., I need to dynamically compute profit/loss based on the selling price entered by the user. How could I achieve that.. Kindly pls help me.. Thanks in advance..
Attachments: http://www.ruby-forum.com/attachment/11304/rateperunit.png http://www.ruby-forum.com/attachment/11305/rateperunit.jpg