4

次のようにcustomer_billとの間に関連付けを作成しました。customer_bill_line_item

class CustomerBill < ActiveRecord::Base
  attr_accessible :customer_bill_line_items_attributes
  has_many :customer_bill_line_items, :dependent =>:destroy

  accepts_nested_attributes_for :customer_bill_line_items, :allow_destroy => true
end

class CustomerBillLineItem < ActiveRecord::Base
  attr_accessible :customer_bill_id 
  belongs_to :customer_bill, :foreign_key => "customer_bill_id"
end

作成モードでフォームに入ると、次のエラーが発生します。

uninitialized constant CustomerBill::CustomerBillLineItem

Extracted source (around line #66):

63:                             <%end%>
64:                            
65:                            
66:             <%= f.fields_for :customer_bill_line_items do |builder| %>
67:             <%= render 'customer_bill_line_item_fields', :f => builder %>
68:             <%end%>

完全なスタック トレースはコメントに記載されています。

customer_bills_controllerのように作成する必要がある関連付けはあります@customer_bill.customer_bill_line_itemsか??

ガイダンスが必要です。前もって感謝します。

4

3 に答える 3

4

私はすぐにサンプルアプリを一緒に投げて、あなたがしていることを証明しました。https ://github.com/Bram--/customer_billで確認できます。スピンアップする前に、Customer Bill と CustomerBillLineItems があることを確認してください。

c = CustomerBill.create name: 'Name'
CustomerBillLineItem.create name: 'Line Item A', price: '1.00', customer_bill_id: c.id
CustomerBillLineItem.create name: 'Line Item B', price: '2.00', customer_bill_id: c.id

使用しているバージョンは何ですか? 上記のコードに表示されていないものはありますか?

例が役に立てば幸いです。それ以外の場合は、私に連絡してください。

于 2013-02-11T23:49:41.317 に答える
3

あなたは尋ねました:

@customer_bill.customer_bill_line_items のような customer_bills_controller で作成する必要がある関連付けはありますか??

Novae による作業中のモックアップによると、そうではありません(customer_bills_controller.rb、Novae のモックから):

class CustomerBillsController < ApplicationController
  def show
    @customer_bill = CustomerBill.last
  end

  def update
    @customer_bill = CustomerBill.find params[:id]
    @customer_bill.update_attributes!(params[:customer_bill])

  redirect_to @customer_bill, flash: { notice: 'Updated' }
  end
end

違いをロボットで指摘するために、customer_bill_line_item.rbNovae は彼のモデルに(app/models/ からの)より多くのCustomerBillLineItem属性を含めます。attr_accessible

class CustomerBillLineItem < ActiveRecord::Base
  attr_accessible :customer_bill_id, :name, :price
  belongs_to :customer_bill, :foreign_key => "customer_bill_id"
end

これらがあなたのエラーにどのようにつながるか想像できませんが、私が見つけたものです。

于 2013-02-13T16:00:55.260 に答える
2

エラーは、問題が何であるかを示しています。クラス CustomerBill::CustomerBillLineItem が見つかりません。

1: customer_bills#new アクションで customer_bill_line_item のインスタンスを構築していないと仮定しています。それ以外の場合は、同じエラーが表示されます。

次のような新しいアクションで @customer_bill に customer_bill_line_item のインスタンスを構築していることを確認して確認してください

3.times{@customer_bill.customer_bill_line_items.build}

同じエラーが再度発生するが、コントローラー ビルドの行でエラーが何を言っているのかを確認する場合は、CustomerBill を通じてクラス CustomerBillLineItem が見つからないということです。

クラス CustomerBillLineItem のファイル名のタイプミスが疑われます。クラスが customer_bill_line_item.rb という名前のファイルにあり、models フォルダーにあり、他のフォルダーにネストされていないことを確認してください。ここでもスコープが問題になる可能性があります。

一番下の行は、CustomerBillLineItem の名前が付けられていないか、正しく配置されていないため、そのクラスが見つからないことを示すエラーが発生する理由です。

于 2013-02-15T03:10:11.970 に答える