1

ユーザー、レポート、領収書の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

このフォームを機能させるにはどうすればよいですか?

4

1 に答える 1

8

うーん!モデルを生成するときに失敗し、単数形の名前ではなく複数形の名前を付けました。こいつ、ここにいるのはばかだ。

于 2013-01-07T18:56:32.440 に答える