rails 保存前使用表单输入值
rails use form input value before save
我在 rails 中有一个带有输入值的表单,其中 1 个值是 LOV(值列表),第二个输入字段也是 LOV,但取决于另一个字段的输入.
中间不保存第一个字段的输入值。所以我需要在保存之前使用该字段值。
所以,这个例子:
我从字段供应商的所有公司的值列表中选择一家公司,第二个字段 supplier_address 将是一个包含该公司所有地址的 LOV,因此第二个字段的 LOV 取决于所选的值在第一个字段中,公司。
我尝试了什么:
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 is missing or the value is empty: 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, ....
否则,您将不得不 post 有关您的视图和控制器的更多详细信息,以帮助隔离您遇到的问题。
此外,在您的控制器代码中您需要:
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
我在 rails 中有一个带有输入值的表单,其中 1 个值是 LOV(值列表),第二个输入字段也是 LOV,但取决于另一个字段的输入. 中间不保存第一个字段的输入值。所以我需要在保存之前使用该字段值。 所以,这个例子: 我从字段供应商的所有公司的值列表中选择一家公司,第二个字段 supplier_address 将是一个包含该公司所有地址的 LOV,因此第二个字段的 LOV 取决于所选的值在第一个字段中,公司。
我尝试了什么:
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 is missing or the value is empty: 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, ....
否则,您将不得不 post 有关您的视图和控制器的更多详细信息,以帮助隔离您遇到的问题。
此外,在您的控制器代码中您需要:
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