我想在rails中创建发票。发票可以有物品,每件物品都有数量和数量。价钱。这是我们每天看到的典型发票。
为了创建发票,最佳方法是什么。
发票和物品的通用模型是什么?
正如我所见,项目将是一个单独的模型。但是,如何才能为发票创建一个视图,从而创建发票和添加到其中的项目?
例如,我想创建类似此样本发票表单的内容: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:
我正在寻找的另一种解决方案: Google cached version
答案 0 :(得分: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模型将包含与发票和项目之间的链接相关的任何数据。这包括价格,数量,折扣或其他任何可能的东西。
要回答关于单一视图的第二个问题,我可以通过发票资源公开这个问题。
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 %>