0

在我的 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

谁能向我解释这是为什么?

它给我带来了各种各样的麻烦。

谢谢你的帮助。

4

1 回答 1

0

我总是吃item太多的原因是我也在使用这种build_item(user)方法InvoicesHelper。我删除了该功能,现在我得到了我期望的项目数量。

于 2013-10-07T12:48:56.130 回答