讓supose我有一個用戶表格,並且在此表格上有高度,重量和結果行。 在表格I中輸入高度和重量值,並希望將這兩個值相乘並存儲在數據庫的結果行上。我正在嘗試類似的東西在Ruby on Rails上使用表格行值進行數學運算
def create
@user = User.new(params[:user])
@result = @user.height * @user.weight
@user.result = @result
但它不工作,我做錯了什麼?
讓supose我有一個用戶表格,並且在此表格上有高度,重量和結果行。 在表格I中輸入高度和重量值,並希望將這兩個值相乘並存儲在數據庫的結果行上。我正在嘗試類似的東西在Ruby on Rails上使用表格行值進行數學運算
def create
@user = User.new(params[:user])
@result = @user.height * @user.weight
@user.result = @result
但它不工作,我做錯了什麼?
我認爲這將是更好會對模型上的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
確保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
你最好把這個邏輯(乘)寫入你的模型,寫一個方法:before_save
這就是Rails的方式!
看到這個API文檔:http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html
「但它不工作」 什麼是不工作?怎麼了?什麼是錯誤?這些修改後你保存了嗎? – Vache