rails在保存之前使用表单输入值



我在rails中有一个带有输入值的表单,其中1个值是LOV(值列表),第二个输入字段也是LOV,但取决于另一个字段的输入。第一个字段的输入值不会保存在两者之间。因此,在保存之前,我需要使用该字段值。因此,举个例子:我从字段供应商的所有公司的值列表中选择一家公司,第二个字段supplier_address将是一个LOV,包含该公司的所有地址,因此第二个域的LOV取决于在第一个字段company中选择的值。

我尝试过的:

  def new
    @purchase_requisition = PurchaseRequisition.new
    @purchase_requisition.number = find_next_user_value("Purchase_Requisition")
    #@purchase_requisition.supplier_address_id =  PurchaseRequisition.new.purchase_requisition_params[:supplier_id]
    @purchase_requisition = PurchaseRequisition.new(purchase_requisition_params)
    respond_to do |format|
      @purchase_requisition.supplier_address_id = PurchaseRequisition.new.purchase_requisition_params[:supplier_id]
    end
  end

但我仍然得到错误:

param丢失或值为空:purchase_requisition

有人能帮帮我吗?非常感谢。

您遇到的错误不是由您提供的代码引起的。你可能使用了强参数,并有这样的方法:

def purchase_requisition_params
   params.require(:purchase_requisition).permit(# some list of attributes #)
end

问题是params[:purchase_requisition]不存在。可能是因为视图中的form_for没有引用purchase_requisition对象。尝试将as:添加到form_for中,以在该参数键下发送参数:

form_for @requisition, as: :purchase_requisition, ....

否则,您将不得不发布有关视图和控制器的更多详细信息,以帮助隔离您遇到的问题。

此外,在您想要的控制器代码中:

PurchaseRequisition.new(purchase_requisition_params[:supplier_id])

代替:

PurchaseRequisition.new.purchase_requisition_params[:supplier_id]

假设您的所有参数都属于同一个对象(没有任何嵌套属性),这可能是您想要的:

  def purchase_requisition_params
    params.require(:purchase_requisition).permit(:org_id, :document_type, :number, :supplier_id, :supplier_address_id, :partner_id, :project_id, :construction_site_id, :purchase_order_date, :expected_receiving_date, :promised_receiving_date, :supplier_order_number, :supplier_shipping_number, :supplier_invoice_number, :currency, :status) ##you don't need id here
  end

相关内容

  • 没有找到相关文章