simple ruby calculator webpage, how to store temporary variables and process them on the same page with submit -


i'm trying create simple page simple calculations , return them on same page. i'll learn use javascript and/or ajax call them without reloading entire page, i'm new programming i'm trying take incremental steps there.

i have been able create form , submit no errors. result returns '0' , i think it's because when page gets submitted , returns same 'index' page clears instance variable. have few question:

  1. how can variable @result return result (and way of going it?) and
  2. is possible load result in vdrop number field?
  3. in future want able dynamically add rows (that include each variable, amps, volts, etc.) mean want run calculation more once. assume need use sort of "@variable |f| 1..n" type of formula correct?

thanks in advance!

here's controller code:

class calculatorcontroller < applicationcontroller  def calculate    amps = params[:amps].to_i    volts = params[:volts].to_i    distance = params[:distance].to_i    phase = params[:phase].to_i    @result = amps + volts + distance + phase    render 'index' end  end 

here's index.html.erb code calculator page:

<div class="calculator index">     <h2>calculator test</h2> <div>     <table class="table table-condensed">         <tr>             <th>amps</th>             <th>volts</th>             <th>phase</th>             <th>distance</th>             <th>vdrop</th>         </tr>    <%= form_tag({:controller => "calculator", :action => "calculate"}, :method => "post") %>   <tr>     <td><%= number_field 'amps' , :class => 'text_field', :step => 'any' %></td>     <td><%= number_field 'volts', :class => 'text_field', :step => 'any' %></td>     <td><%= number_field 'phase', :class => 'text_field', :step => 'any' %></td>     <td><%= number_field 'distance', :class => 'text_field', :step => 'any' %></td>       <td><%= number_field 'vdrop', :class => 'text_field', :step => 'any' %></td>     </tr>       </table>      <%= submit_tag('submit')%> </div> <div>      <%= @result %> </div>  <% end %> </div> 

the problem here you're trying pass instance variables, instances of action other actions cause technically index.html.erb template being rendered due index action don't have. i'd is:

class calculatorcontroller < applicationcontroller  def index    if params[:amps]      amps = params[:amps].to_i      volts = params[:volts].to_i      distance = params[:distance].to_i      phase = params[:phase].to_i      @result = amps + volts + distance + phase    else      @result = "make calculation"    end end  end 

your form:

<%= form_tag ({controller: 'calculators', action: 'index'}), method: :get %>      <td><%= number_field_tag :amps , nil %></td>     <td><%= number_field_tag :volts, nil %></td>     <td><%= number_field_tag :phase, nil %></td>     <td><%= number_field_tag :distance, nil %></td>       <td><%= number_field_tag :vdrop, nil %></td>     <%= submit_tag('submit')%> <% end %>     <%= @result %> 

will work. tried it.

number of things make work: 1. it's number_field_tag not number_field. 2. try not use "amps" params instead use :amps, if params[:amps] wasn't detecting "amps" unless did params["amps"]

controller same.


Comments

Popular posts from this blog

javascript - RequestAnimationFrame not working when exiting fullscreen switching space on Safari -

Python ctypes access violation with const pointer arguments -