从模型中获取参数

时间:2013-03-05 14:14:22

标签: ruby-on-rails ruby-on-rails-3

我很确定有更好的方法可以做我想做的事情,所以请告诉我。

我有模型,可以出售给某人(有sale_pricebuyer_id)或被传递(不会出售给任何人 - {{1零和没有sale_price)。

到目前为止,我只是依赖于用户输入相应的价格/买家组合,但我想在项目编辑表单中添加第二个提交按钮,只是说“通过”。 (buyer_id)。

按下该按钮提交后,我想覆盖用户已选择的<input type="submit" name="pass" value="Pass" />sale_price并自行设置。

我假设我应该在item.rb中执行buyer_id,但我不知道如何从模型中检测按钮 - 或者甚至可能(或建议)。

由于

1 个答案:

答案 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

希望它有所帮助。干杯!