我想在rails中创建发票。发票可以包含物品,每件物品都有数量,税号和税号。价钱。这是我们每天看到的典型发票。
为了创建发票,最佳方法是什么。
发票和物品的常见模式是什么?
我知道物品将是一个单独的模型。但是,如何才能为发票创建一个视图,同时创建发票和添加到其中的项目?
我的意思是,在新发票页面中,会有客户列表和项目列表,但在这里我不知道如何在创建发票时进行关联。有什么好的例子我可以效仿吗?
请感谢您的帮助。或者甚至只需要了解我需要遵循的步骤,以实现这一目标......
这是我的基本ERD
答案 0 :(得分:0)
我可以推荐使用payday gem吗?我在过去的应用程序中创建了发票模型,并且我会告诉您什么,根据您正在构建的应用程序类型,它有时会非常棘手。但除了方便因素之外,我喜欢使用这个宝石的原因是它还可以将您的发票呈现为可自定义的PDF。
它使得向发票中添加项目变得轻而易举,例如从他们的GitHub页面中添加:
invoice = Payday::Invoice.new(:invoice_number => 12)
invoice.line_items << Payday::LineItem.new(:price => 20, :quantity => 5, :description => "Pants")
invoice.line_items << Payday::LineItem.new(:price => 10, :quantity => 3, :description => "Shirts")
invoice.line_items << Payday::LineItem.new(:price => 5, :quantity => 200, :description => "Hats")
invoice.render_pdf_to_file("/path/to_file.pdf")
答案 1 :(得分:0)
相当广泛的问题,这就是我要做的事情:
#app/models/invoice.rb
class Invoice < ActiveRecord::Base
belongs_to :user
has_many :line_items
has_many :items, through: :line_items
accepts_nested_attributes_for :line_items
end
#app/models/line_item.rb
class LineItem < ActiveRecord::Base
belongs_to :invoice
belongs_to :item
end
#app/models/item.rb
class Item < ActiveRecord::Base
belongs_to :company
has_many :line_items
has_many :invoices, through: :line_items
end
-
#app/models/user.rb
class User < ActiveRecord::Base
has_many :invoices
end
这将是基本级别“发票”关联结构 - 您的clients
/ users
可以建立在它之上。
您的路线等可以如下:
#config/routes.rb
resources :invoices
#app/controllers/invoices_controller.rb
class InvoicesController < ApplicationController
def new
@invoice = current_user.invoices.new
@invoice.line_items.build
end
def create
@invoice = current_user.invoices.new invoice_params
@invoice.save
end
end
那么您的观点将是这样的:
#app/views/invoices/new.html.erb
<%= form_for @invoice do |f| %>
<%= f.fields_for :line_items do |l| %>
<%= f.text_field :quantity %>
<%= f.collection_select :product_id, Product.all, :id, :name %>
<% end %>
<%= f.submit %>
<% end %>
这会创建相应的@invoice
,您可以按如下方式调用:{/ p>
@user.invoices.first
除此之外,我没有足够的具体信息来帮助