私はレールを初めて使用し、最初のレール プロジェクトの 1 つに取り組んでいます。これは、請求書フォーム内にネストされた明細項目を持つ請求書アプリです。請求書を保存する前に、請求書の合計を計算したいと考えています。保存プロセス中に項目を追加した場合はうまく保存されますが、ネストされた項目の 1 つが削除されるようにタグ付けされている場合、合計が正しく計算されません。正しい合計請求額を取得するには、戻ってもう一度保存する必要があります。
class Invoice < ActiveRecord::Base
attr_accessible :job_name, :items_attributes, :tax1, :tax2, :subtotal
before_save :calculate_totals
has_many :items, :dependent => :destroy
accepts_nested_attributes_for :items, allow_destroy: true
private
def calculate_totals
self.subtotal = 0
self.items.each do |i|
self.subtotal = self.subtotal + (i.quantity * i.cost_per)
end
end
end
これが params とどのように異なるかは確かですが、問題の項目レコードは要求されたパラメーターに :_destroy = true でリストされています
{"utf8"=>"✓",
"_method"=>"put",
"authenticity_token"=>"+OqRa7vRa1CKPMCdBrjhvU6jzMH1zQ=",
"invoice"=>{"client_id"=>"1",
"job_name"=>"dsdsadsad",
"items_attributes"=>{"0"=>{"name"=>"jhksadhshdkjhkjdh",
"quantity"=>"1",
"cost_per"=>"50.0",
"id"=>"21",
"_destroy"=>"false"},
"1"=>{"name"=>"delete this one",
"quantity"=>"1",
"cost_per"=>"10.0",
"id"=>"24",
"_destroy"=>"true"}}},
"commit"=>"Update Invoice",
"id"=>"8"}
助けてくれてありがとう。