我在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
??
需要指导。提前谢谢。
答案 0 :(得分:4)
我很快就把一个示例应用程序放在一起证明你做的是对的,你可以在这里查看:https://github.com/Bram--/customer_bill哪个工作正常。 只需确保在您启动它之前就有一个客户账单&amp; 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
您使用的是什么版本,我们在上面的代码中没有看到任何其他内容?
希望这个例子有所帮助,否则请给我留言。
答案 1 :(得分:3)
你问:
是否必须在customer_bills_controller中进行关联,如@customer_bill.customer_bill_line_items ??
根据Novae的工作模型它不(来自customer_bills_controller.rb,Novae's mock):
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
模型中,Novae在CustomerBillLineItem
中包含更多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
我无法想象这些会如何导致您的错误,但它们是我能够找到的。
答案 2 :(得分:2)
错误告诉你问题是什么。没有可以找到的CustomerBill :: CustomerBillLineItem类。
1:我假设你没有在customer_bills #new action中构建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未正确命名或放置,这就是为什么你得到的错误告诉你它无法找到所说的类。