【发布时间】:2017-12-21 04:02:17
【问题描述】:
我有一张账单表格。打开后,我选择一个供应商来显示供应商的未结采购订单列表。选择采购订单应获取采购订单中订购的所有项目,并将它们显示为账单中的行项目。
当表单已经呈现并且我已经看到嵌套属性和在表单上添加或删除等的链接时,如何实现这一点?
我当前的实现是使用 cocoon 的简单嵌套资源。
<%= simple_form_for(@bill) do |f| %>
<%= f.error_notification %>
<div class="form-inputs">
<%= f.input :vendor_id, as: :select do %>
<%= f.grouped_collection_select :vendor_id, Warehouse.ordered, :vendors, :name, :id, :name, include_blank: true %>
<% end %>
</div>
<div id="items">
<div id="ingredient_purchase" class="row">
<div class="row">
<%= f.simple_fields_for :warehouse_ingredient_purchase_logs do |warehouse_ingredient_purchase_log| %>
<%= render 'warehouse_ingredient_purchase_log_fields', :f => warehouse_ingredient_purchase_log %>
<% end #f.simple_fields_for %>
<div class="links">
<%= link_to_add_association 'Add More', f, :warehouse_ingredient_purchase_logs %>
</div>
</div>
</div>
</div>
<div class="form-actions">
<%= f.button :submit %>
</div>
<% end #simple_form_for(@bill) do |f| %>
<!-- Modal Structure -->
<div id="modal1" class="modal bottom-sheet">
<div class="modal-content">
<h4>Purchase Orders</h4>
<div class="purchase_orders_data"></div>
</div>
</div>
【问题讨论】:
-
你能在一张账单中合并不同的采购订单吗?总是只有一个供应商,对吧?
-
目前正在为每张账单寻找一个采购订单。以后可能会针对多个采购订单对其进行增强。当然,每个账单只有一个供应商。
-
我会首先收集参数:供应商,以及一个或多个采购订单,然后使用这些数据来构建账单并显示它。您如何实际执行此操作(使用 html 或 ajax/xhr)取决于您,但当您知道应该如何构建账单表单时,实际上等待构建账单表单。清楚吗?
-
当我已经在账单创建屏幕上时,如何首先收集参数。不确定。我现在的流程是这样的。我来到新的账单屏幕,选择一个供应商,一个带有所有供应商未结采购订单的模式打开,我可以选择我想要使用的采购订单。现在我想要发生的是,一旦我选择了采购订单,该采购订单的行项目应该成为新账单的行项目。我的问题是如何将 3 或 4 或 5 行项目附加到账单屏幕?
-
选项:1)打开账单创建屏幕,显示供应商列表,显示模式,然后发布并创建账单,然后重定向到编辑(很简单,但账单已经创建,也许你不想要那),2)打开账单创建屏幕,控制器没有参数所以:显示供应商列表,显示模式,然后再次获取账单创建屏幕,但使用给定的参数(供应商+账单)并显示正确的创建表格新法案; 3)打开账单创建,显示供应商列表,打开模式,选择时执行 ajax/xhr 调用以构建表单,然后渲染并继续。