我有三个模型,用户、报告和收据。用户有很多报告,报告有很多收据。
现在,我设置了一个表单来创建或编辑报告。我需要嵌套另一个表单来创建和编辑收据。我按照 Rails 指南(部分 - 构建多模型表单)并编辑了我的模型,并将构建线添加到我的表单视图中,但我收到了“未初始化的常量”错误。
这是我的模型:
class Report < ActiveRecord::Base
belongs_to :user
has_many :receipts
attr_accessible :cash_advance, :company, :description, :end_date, :mileage, :report_name,
:start_date, :receipts_attributes
validates_presence_of :company, :description, :end_date, :report_name#, :start_date
validates_uniqueness_of :report_name
accepts_nested_attributes_for :receipts, :allow_destroy => :true,
:reject_if => proc { |attrs| attrs.all? { |k, v| v.blank? } }
end
class Receipts < ActiveRecord::Base
belongs_to :report
attr_accessible :account_code, :amount, :company_card, :date, :description, :lobbying_expense, :vendor
end
和我的表格:
<%# @report.receipts.build %>
<%= form_for([current_user,@report]) do |f| %>
...
<%= f.fields_for ([@report, @report.receipts.build ]) do |receipt| %>
...
<% end %>
<% end %>
我的路线(我不确定我是否应该编辑,但在添加收据资源之前我遇到了同样的错误)
resources :users do
resources :reports do
resources :receipts
end
end
我没有编辑报告控制器,因为 rails 指南没有提到它,它只是:
def new @report = current_user.reports.new 结束
def 编辑@report = current_user.reports.find(params[:id]) end
我究竟做错了什么?
编辑 - 我更改了收据表格,因此 form_for 接受 [@report, @report.receipts.build] 但现在我收到错误:
uninitialized constant Report::Receipt
我如何让这个表格工作?