发票模型&在rails中查看 - 如何

时间:2012-09-02 12:58:31

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 invoice

我想在rails中创建发票。发票可以有物品,每件物品都有数量和数量。价钱。这是我们每天看到的典型发票。

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

  1. 发票和物品的通用模型是什么?

  2. 正如我所见,项目将是一个单独的模型。但是,如何才能为发票创建一个视图,从而创建发票和添加到其中的项目?

  3. 例如,我想创建类似此样本发票表单的内容: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

1 个答案:

答案 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 %>