在我的 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
被实例化了 new invoice
:
<p>No. of items: <%= @invoice.items.length %></p>
我的问题是我在我期望看到0的地方得到1 (请注意,我在上面的控制器操作中注释掉了第二行)。new
谁能向我解释这是为什么?
它给我带来了各种各样的麻烦。
谢谢你的帮助。