【发布时间】:2011-10-21 03:13:32
【问题描述】:
我正在尝试开具发票申请。以下是与我的问题相关的模型:
更新:由于最近的建议,模型信息已更改
Invoice
> id
> created_at
> sales_person_id
LineItem
> id
> invoice_id
> item_id
> qty_commit (inventory only)
> qty_sold
> price (because prices change)
> ...etc
Item
> barcode
> name
> price
> ...etc
发票has_many items, :through => :line_items。项目同上。我想要做的是,当我创建新发票时,我希望表单中包含所有可用项目。我不希望填充所有项目的唯一时间是在查看发票时(因此只应检索 LineItems 表中存在的项目)。目前 - 显然 - 新发票没有项目。当集合中当前没有任何内容时,如何将它们列出,以及如何填充表单?我还希望在创建失败时所有产品都可用(以及用户通过表单选择的产品)。
更新:我可以通过控制器通过以下方式创建项目:
@invoice = Invoice.new
# 使用所有产品填充发票,以便可以选择它们
Item.where("stock > ?", 0).each do |i|
@invoice.items.new(i.attributes)
结束
这当然是我做我想做的事情的粗略尝试。从视觉上看效果很好,但正如预测的那样,当我实际尝试保存模型时,我的表单 ID 等并不能很好地发挥作用。
需要 LineItem(#37338684),得到 Array(#2250012)
表格示例:
# f 是 form_for
p.tax_included %>
$
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 forms has-and-belongs-to-many