接收参数并保存在其他模型中并删除错误 'id'= 0 找不到授权
Receive params and save in other model and remove error Couldn't find Authorization with 'id'= 0
我有一个带有复选框和输入文本的视图。
提交后,我在输入时选中了一个复选框和数字值。但是有两个问题...参数错误并且不保存我的 table 上的值,这是我的代码:
refinancings_controller.rb
def new
if params[:authorization]
@selected_ids = params[:authorization][:contract_ids]
@authorizations = Authorization.where("contract_number in (?)", @selected_ids)
end
@employee = Employee.search_cpf(params[:search_employee_by_cpf])
@refinancing = Refinancing.new
params[:authorization][:contract_ids].each_with_index do |id, index|
Authorization.find(id).update_column(value_solve: params[:authorization][:value_solve], situation: 2)
end
end
这是我的控制台:
Parameters: {"utf8"=>"✓", "search_employee_by_cpf"=>"123456789", "authorization"=>{"contract_ids"=>["11"], "value_solve"=>["334545", "", ""]}, "commit"=>"Reserve"}
Completed 500 Internal Server Error in 18ms (ActiveRecord: 0.6ms)
错误是:
Couldn't find Authorization with 'id'= 0
我的看法是正确的。其他的东西。再融资 belongs_to :authorization and Authorizarion has_many :refinancings
当我检查时,复选框的 id 单击通过 ok 和 value_solve 也是,但情况没有改变,db
上没有任何保存
您应该只使用 each 而不是 each_with_index。您现在设置它的方式是将数组的索引传递给您的查找方法。数组的第一个索引始终为 0,这就是您收到该错误的原因。您可以这样设置:
params[:authorization][:contract_ids].each do |id|
使用此代码:
Authorization.where(id: params[:authorization][:contract_ids]).update_all(value_solve: [:authorization][:value_solve])
显示此错误:
TypeError in RefinancingsController#new
no implicit conversion of Symbol into Integer
答案是:
auth_params = params[:authorization]
auth_params[:contract_number].zip(auth_params[:value_solve].reject(&:blank?)).each do |contract_number, value_solve|
Authorization.where(contract_number: contract_number).update_all(value_solve: value_solve, situation: 2)
end
:D
我有一个带有复选框和输入文本的视图。 提交后,我在输入时选中了一个复选框和数字值。但是有两个问题...参数错误并且不保存我的 table 上的值,这是我的代码:
refinancings_controller.rb
def new
if params[:authorization]
@selected_ids = params[:authorization][:contract_ids]
@authorizations = Authorization.where("contract_number in (?)", @selected_ids)
end
@employee = Employee.search_cpf(params[:search_employee_by_cpf])
@refinancing = Refinancing.new
params[:authorization][:contract_ids].each_with_index do |id, index|
Authorization.find(id).update_column(value_solve: params[:authorization][:value_solve], situation: 2)
end
end
这是我的控制台:
Parameters: {"utf8"=>"✓", "search_employee_by_cpf"=>"123456789", "authorization"=>{"contract_ids"=>["11"], "value_solve"=>["334545", "", ""]}, "commit"=>"Reserve"}
Completed 500 Internal Server Error in 18ms (ActiveRecord: 0.6ms)
错误是:
Couldn't find Authorization with 'id'= 0
我的看法是正确的。其他的东西。再融资 belongs_to :authorization and Authorizarion has_many :refinancings 当我检查时,复选框的 id 单击通过 ok 和 value_solve 也是,但情况没有改变,db
上没有任何保存您应该只使用 each 而不是 each_with_index。您现在设置它的方式是将数组的索引传递给您的查找方法。数组的第一个索引始终为 0,这就是您收到该错误的原因。您可以这样设置:
params[:authorization][:contract_ids].each do |id|
使用此代码:
Authorization.where(id: params[:authorization][:contract_ids]).update_all(value_solve: [:authorization][:value_solve])
显示此错误:
TypeError in RefinancingsController#new
no implicit conversion of Symbol into Integer
答案是:
auth_params = params[:authorization]
auth_params[:contract_number].zip(auth_params[:value_solve].reject(&:blank?)).each do |contract_number, value_solve|
Authorization.where(contract_number: contract_number).update_all(value_solve: value_solve, situation: 2)
end
:D