在我的Rails应用程序中,我invoices
可以有许多items
:
class Invoice < ActiveRecord::Base
attr_accessible :number, :items_attributes # some omitted for brevity
has_many :items
accepts_nested_attributes_for :items, :reject_if => :all_blank
def build_item(user)
items.build(
:price => default_item_price(user),
:tax_rate => user.tax_rate
)
end
private
def real_hourly_rate
project.real_hourly_rate if project.present?
end
def default_item_price(user)
real_hourly_rate || user.hourly_rate
end
end
class InvoicesController < ApplicationController
def new
@invoice = current_user.invoices.build(:number => current_user.next_invoice_number)
#@invoice.build_item(current_user)
end
end
位于我views/invoices/new.html.erb
的表单下方,我在此行中查看了使用新items
实例化了多少invoice
:
<p>No. of items: <%= @invoice.items.length %></p>
我的问题是我得到 1 ,我希望看到 0 (请注意,我在上面的new
控制器操作中注释了第二行)
有人可以向我解释为什么会这样吗?
这给我带来了各种各样的麻烦。
感谢您的帮助。
答案 0 :(得分:0)
我总是有一个item
太多的原因是我在build_item(user)
中也使用了InvoicesHelper
方法。我删除了该功能,现在我得到了我期望的项目数量。