2014-07-10 44 views
0

我想用两个提交的表单变量做一个简单的计算,然后将所有三个变量存储在数据库中。每个变量都是我数据库中的一列。简单的计算和存储到红宝石数据库

E.G.

somedbfield = (item_1 * item_2) + 2 

我在形式将如何提交,somedbfielditem_1item_2保存在测试数据库?所有三个项目都在validates_numericality_of验证在模型中,他们应该都是整数。这只是我的基本代码,找出从提交表单的test.id,但我不知道如何使用表单值来创建一个计算,然后所有三个值向数据库提交:

class Test_Controller < ApplicationController 

     def update 
     @test = Test.find(params[:id]) 
      respond_to do |format| 
      if @test.update(test_params) 
      format.html { redirect_to('index', :notice => 'User was successfully updated.') } 
      format.json { respond_with_bip(@test) } 
      else 
      format.html { render :action => "edit" } 
      format.json { respond_with_bip(@test) } 
      end 
     end 

private 

def test_params 
     params.require(:test).permit(:item_1, :item_2, :somedbfield) 
end 

end 

这是一个更简单的问题的版本,我以前问,但无法得到任何答案,所以我只是想简化,并从那里工作。

谢谢!

+0

你的问题是什么?发布您的当前代码,并告诉我们有什么问题,以便我们提供帮助。 – Martin

+0

@Martin更新... – KevinW

回答

0

我看到它的方式,您的update方法只是检索模型的一个实例,并保存它没有做任何事情。

要更新数据库,你就需要在参数的情况下通过,然后将其保存:

item_1 = params[:item_1] 
    item_2 = params[:item_2] 
    somedbfield = (item_1 * item_2) + 2 
    @test.update(:item_1 => item_1, :item_2 => item_2, :somedbfield => somedbfield) 
0

你应该使用params[:symbol]语法这一点。您可以使用:

@test.item_1=params[:item_1] 
@test.item_2=params[:item_2] 
@test.somedbfield=params[:item_1]*params[:item_2]+2 
@test.save 

让我知道这是否有帮助。

+0

你可以再看一下,因为我已经有一个if @ test.update(test_params)它不起作用? – KevinW