4

我在 和 之间创建了一个关联customer_billcustomer_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效果很好。只需确保在启动之前您有一个客户账单和客户账单行项目:

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_bills_controller 中建立关联,例如@customer_bill.customer_bill_line_items?

根据我们 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.rb模型 NovaeCustomerBillLineItem中包含更多属性attr_accessible(来自 app/models/):

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 的文件中,并且位于您的模型文件夹中,并且没有嵌套在任何其他文件夹中。可能范围在这里也是一个问题。

底线是 CustomerBillLineItem 没有正确命名或放置,这就是为什么你得到那个错误,告诉你它找不到所说的类。

于 2013-02-15T03:10:11.970 回答