Rails:如何将for循环的结果保存到数据库中

时间:2013-02-05 12:35:23

标签: ruby-on-rails ruby-on-rails-3.2

我是rails的新手,我可能需要一些帮助。被困在这里几天了。我已经搜索了解决方案但是没有得到它。问题是我想将for循环的结果保存到数据库(postgreSQL)。

    <% @amount = (params[:h].to_d * params[:k].to_d) %> 
    <% @percent = (params[:h].to_d * params[:k].to_d) / params[:p].to_d %>
<% for i in 0..params[:a].to_i do %>  
    <% @newAmount = ((@amount/(@percent)) + @amount) %>  
    <%= "#{i}" + " - #{@amount}" %><br />
    <% @amount=@newAmount %>
<% end %>

如果我能保存表单数据也很好,我发现form_tag不是很好保存数据,但我真的不知道怎么用form_for来做。

<%= form_tag ('/calc') do  %> 
  A_n: <%= text_field_tag :a_n %><br />
  H: <%= text_field_tag :h %><br />
  K: <%= text_field_tag :k %><br />
  P: <%= text_field_tag :p %><br />
  A: <%= text_field_tag :a %><br />
  <%= submit_tag 'Calc' %>
<% end %>

我很抱歉,如果这是基本的或非常简单的(我确定它是)但我希望我能找到一些帮助如何正确地做到这一点。

型号:

class Calculation < ActiveRecord::Base
  attr_accessible :a, :a_n, :h, :k, :p
end

表:

  create_table "calculation", :force => true do |t|

    t.string   "a_n"

    t.decimal  "h"

    t.decimal  "k"

    t.decimal  "p"

    t.integer  "a"

    t.datetime "created_at",  :null => false

    t.datetime "updated_at",  :null => false

  end

1 个答案:

答案 0 :(得分:0)

这就是我的表单,使用form_for很容易进行验证,为什么不制作它们?

<%= form_for @calculation do |f| %>
  <% if @calculation.errors.any? %>
    <h2>Errors:</h2>
    <ul>
      <% @calculation.errors.full_messages.each do |message| %>
        <li><%= message %></li>
      <% end %>
    </ul>
  <% end %>
  A n: <%= f.text_field :a_n %><br />
  H: <%= f.text_field :h %><br />
  K: <%= f.text_field :k %><br />
  P: <%= f.text_field :p %><br />
  A: <%= f.text_field :a %><br />
  <%= f.submit 'CALC' %>
<% end %>  

节目视图是:

<p>A n: <%= @calculation.a_n %></p>
<p>H: <%= @calculation.h %></p>
<p>K: <%= @calculation.k %></p>
<p>P: <%= @calculation.p %></p>
<p>A: <%= @calculation.a %></p>
<small>T: <%= @calculation.created_at %></small>
 <br />
    <%= @calculation.a_n %> <br />
    <% @amount = (@calculation.h * @calculation.k) %> 
    <% @percent = (@calculation.h * @calculation.k) / @calculation.p %> 
  <% for i in 0..@calculation.a do %> 
    <% @newAmount = ((@amount/(@percent)) + @amount) %>
    <%= "#{i}" + " - #{@amount}" %><br />
    <% @amount=@newAmount %>
  <% end %>

这完美无缺!感谢您的关注和帮助!