ユーザー、レポート、領収書の3つのモデルがあります。ユーザーには多くのレポートがあり、レポートには多くの領収書があります。
これで、レポートを作成または編集するためのフォームが設定されました。また、領収書を作成および編集するには、別のフォームをネストする必要があります。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 end
def edit @report = current_user.reports.find(params [:id])end
私は何が間違っているのですか?
編集-領収書のフォームを変更して、form_forが[@ report、@ report.receipts.build]を取り込むようにしましたが、エラーが発生します。
uninitialized constant Report::Receipt
このフォームを機能させるにはどうすればよいですか?