我很确定有更好的方法可以做我想做的事情,所以请告诉我。
我有项模型,可以出售给某人(有sale_price
和buyer_id
)或被传递(不会出售给任何人 - {{1零和没有sale_price
)。
到目前为止,我只是依赖于用户输入相应的价格/买家组合,但我想在项目编辑表单中添加第二个提交按钮,只是说“通过”。 (buyer_id
)。
按下该按钮提交后,我想覆盖用户已选择的<input type="submit" name="pass" value="Pass" />
和sale_price
并自行设置。
我假设我应该在item.rb中执行buyer_id
,但我不知道如何从模型中检测按钮 - 或者甚至可能(或建议)。
由于
答案 0 :(得分:4)
您可以区分控制器中的提交类型:
def create
item = Item.new(params[:item])
if params[:commit] == "Pass"
item.sale_price = nil
item.buyer_id = nil
end
if item.save
# ...usual rails stuff
end
end
当然,如果你在控制器中有提交类型,你可以将它传递给具有虚拟属性的模型,如果你愿意,可以使用回调:
class Item < ActiveRecord:Model
attr_accessor :pass
before_save :reset_sale_price
private
def reset_sale_price
if pass
self.sale_price = nil
self.buyer_id = nil
end
end
end
class ItemsController < ApplicationController
def create
item = Item.new(params[:item])
item.pass = (params[:commit] == "Pass")
if item.save
#... standard rails stuff
end
end
end
希望它有所帮助。干杯!