0

我想在 Rails 中创建发票。发票可以有项目,每个项目都有数量和价格。这是我们每天看到的典型发票。

为了创建发票,最好的方法是什么。

  1. 发票和项目的常见模型是什么?

  2. 正如我所见,项目将是一个单独的模型。但是我们如何才能拥有一个发票视图,它既可以创建发票,也可以创建添加到其中的项目?

例如,我想创建类似这样的示例发票表单:http: //sourceforge.net/projects/gal/screenshots/48841


更新:

除了答案之外,以下链接对于解决问题很有用:发票示例:https ://github.com/linkworks/invoices

http://railscasts.com/episodes/196-nested-model-form-part-1

http://railscasts.com/episodes/197-nested-model-form-part-2

ryan bates 也为同样的目的创建了一个 rails 插件!:https ://github.com/ryanb/nested_form


更新 2:

我正在寻找的另一个解决方案: 谷歌缓存版本

4

1 回答 1

1

我将有一个 Invoice 模型、一个 Item 模型和一个将它们链接在一起的模型,您可以在其中保存数量、价格等:

class Invoice < ActiveRecord::Base
  has_many :invoice_items
  has_many :items, :through => :invoice_items
end

class InvoiceItem < ActiveRecord::Base
  belongs_to :invoice
  belongs_to :item
end

class Item < ActiveRecord::Base
  has_many :invoice_items
  has_many :invoices, :through => :invoice_items
end

InvoiceItem 模型将包含与发票和项目之间的链接相关的任何数据。这将包括价格、数量、折扣或您可能拥有的任何其他内容。

要回答关于单一视图的第二个问题,我可以通过 Invoice 资源公开这一点。

class InvoicesController < ApplicationController
  def show
    @invoice = Invoice.find(params[:id]).includes(:invoice_items => :items)
  end
end

然后您的视图可以遍历这些项目:

<% @invoice.invoice_items.each do |item| %>
  <%= item.quantity %>
<% end %>
于 2012-09-02T13:19:23.920 回答