2011-08-18 80 views
1

讓supose我有一個用戶表格,並且在此表格上有高度,重量和結果行。 在表格I中輸入高度和重量值,並希望將這兩個值相乘並存儲在數據庫的結果行上。我正在嘗試類似的東西在Ruby on Rails上使用表格行值進行數學運算

def create 
    @user = User.new(params[:user]) 
    @result = @user.height * @user.weight 
    @user.result = @result 

但它不工作,我做錯了什麼?

+1

「但它不工作」 什麼是不工作?怎麼了?什麼是錯誤?這些修改後你保存了嗎? – Vache

回答

2

我認爲這將是更好會對模型上的before_save過濾器進行計算。使用第2分的答案,它應該是這樣的:

users_controller.rb

def create 
    @user = User.new(params[:user]) 
    if @user.save 
    redirect_to @user 
    else 
    render :action => :new 
    end 
end 

user.rb

before_save :compute_result 

def compute_result 
    result = height * weight 
end 
0

確保params [:user]的值爲:身高&:重量鍵。如果是,那麼你應該設置字段高度&重量attr_accessible這樣的:

user.rb

class User < ActiveRecord::Base 
    attr_accessor :height, :weight 
end 

users_controller.rb

def create 
    @user = User.new(params[:user]) 
    @result = @user.height * @user.weight 
    @user.result = @result 
    if @user.save 
     redirect_to @user 
    else 
     render :action => :new 
    end 
end 
相關問題