Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails发票应用程序_Ruby On Rails - Fatal编程技术网

Ruby on rails Rails发票应用程序

Ruby on rails Rails发票应用程序,ruby-on-rails,Ruby On Rails,我想在rails中创建一个发票。发票可以有项目,每个项目都有数量、税费和价格。这是我们每天看到的典型发票 创建发票的最佳方法是什么 发票和项目的通用模型是什么 我知道项目将是一个单独的模式。但是,我们如何能够拥有一个发票视图,它创建发票和添加到其中的项目 我的意思是,在一个新的发票页面中,会有客户列表和项目列表,但在这里我不确定在创建发票时如何进行关联。有什么好的例子我可以效仿吗 请给我一些帮助。甚至只是一步一步的走,我需要遵循,以实现这一点 这是我的基本ERD 我可以推荐使用吗?我在过去的应用

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

创建发票的最佳方法是什么

发票和项目的通用模型是什么

我知道项目将是一个单独的模式。但是,我们如何能够拥有一个发票视图,它创建发票和添加到其中的项目

我的意思是,在一个新的发票页面中,会有客户列表和项目列表,但在这里我不确定在创建发票时如何进行关联。有什么好的例子我可以效仿吗

请给我一些帮助。甚至只是一步一步的走,我需要遵循,以实现这一点

这是我的基本ERD

我可以推荐使用吗?我在过去的应用程序中创建了发票模型,我将告诉您,根据您正在构建的应用程序的类型,有时会变得非常棘手。但是,除了方便因素之外,我喜欢使用这个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")
invoice=Payday::invoice.new(:invoice\u number=>12)
发票行\项目20,:数量=>5,:说明=>“裤子”)
发票行\项目10,:数量=>3,:说明=>“衬衫”)
发票行_项目5,:数量=>200,:说明=>Hats)
invoice.render_pdf_to_文件(“/path/to_file.pdf”)

这是一个相当广泛的问题,下面是我要做的:

#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/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 %>

除此之外,我没有足够的具体信息来具体帮助你

谢谢你的建议:)我正在尝试在不使用大量宝石的情况下构建这个。谢谢你的反馈,我喜欢你迄今为止的建议。我会试试这个,一旦我开始工作或者我有任何问题(希望没有),我会告诉你。大家好,我们想知道item表和line_item表中应该包含哪些内容。我指的是商品名称、价格、数量等。就我的情况而言,我有一个类似于当前公司的项目,要调用现有项目,我会这样做。项目,那么我需要更改为当前公司。行项目吗?我对项目和行项目以及它们里面的内容非常困惑。
#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 %>
@user.invoices.first