Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何从ROR中的编辑表单中获取参数?_Ruby On Rails - Fatal编程技术网

Ruby on rails 如何从ROR中的编辑表单中获取参数?

Ruby on rails 如何从ROR中的编辑表单中获取参数?,ruby-on-rails,Ruby On Rails,我正在创建一个项目,使用active admin为用户创建一个合同。我必须使用开始日期和合同年数(年数)计算合同的最后日期。它可以很好地用于创建新合同。但对于更新,当我更改开始日期和年数时,不需要开始编辑(表单输入)。 注意:我无法使用开始日期更改合同 ActiveAdmin.register Contract do menu false config.batch_actions = true index do id_column column :start_date colum

我正在创建一个项目,使用active admin为用户创建一个合同。我必须使用开始日期和合同年数(年数)计算合同的最后日期。它可以很好地用于创建新合同。但对于更新,当我更改开始日期和年数时,不需要开始编辑(表单输入)。 注意:我无法使用开始日期更改合同

  ActiveAdmin.register Contract do

  menu false
  config.batch_actions = true

index do
id_column
column :start_date
column :end_date
 actions defaults: true do |contract|
 link_to 'Archive', archive_active_admin_contract_path(contract)
 end
end

filter :start_date
filter :num_years

form  do |form|
form.inputs do

  if form.object.new_record?
    form.input :num_years, :label => "No. of Years", :required => true
  else
   form.input :num_years, :label => "No. of Years", :required => true, :input_html => {:value => "#{Contract.contract_year(params[:id])}"}
  end

  form.input :start_date, :label => "Contract Start Date", :required => true, :discard_day => true , :include_blank => false
 end

form.actions :commit
end
 before_filter :only => [:create, :update] do

  if self.action_name.to_sym == :create
   @contract = Contract.new( params[:contract] )
  else
  @contract = Contract.find( params[:id] )
 end

 if @contract.start_date.present?
  n = params[:contract][:num_years]
  n = n.blank? ? 1 : n.to_i
  @contract.end_date = @contract.start_date + n.years - 1.day
end
end

def update
  flash[:notice] = 'Contract has been created successfully!'
  update!do |format|
    format.html { redirect_to user_path }
  end

我通过下面的代码将我的代码从控制器更改为它的工作模型

before_save :calculate
def calculate
n = self.num_years
n = n.blank? ? 1 : n.to_i
self.end_date = self.start_date + n.years
end

我正在使用主动管理