删除rails 3.1中嵌套资源中的路由

时间:2012-01-06 23:02:37

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

我有一个嵌套资源:

resources :bills do
  resources :debts
end

当我在debts视图中的索引html中创建一个删除链接时,如下所示:

<td>
   <%= link_to "Delete", [@bill, @debt], confirm: "Are you sure?", method: :delete %>
</td>
该法案被删除,而不是债务。 会发生什么?,我怎样才能删除特定账单中的一笔债务? 这是我在债务控制器中的删除操作。

def destroy
    @bill = Bill.find(params[:bill_id])
    @debt = @bill.debts.find(params[:id])
    @debt.destroy

    flash[:notice] = "The debt was successfully deleted"
    redirect_to bill_debts_url    
end

我的模特:

比尔模特:

class Bill < ActiveRecord::Base
  has_many :debts
end

债务模型:

class Debt < ActiveRecord::Base
  belongs_to :bill
end

提前致谢!

1 个答案:

答案 0 :(得分:1)

您有has_many个关联。如果是bill has_many debts,则bill.debts是关联,而不是单个对象。您需要在该对象上调用destroy_all来销毁所有这些对象:

def destroy
  @bill = Bill.find(params[:bill_id])
  @debts = @bill.debts.find(params[:id])
  @debts.destroy_all

  flash[:notice] = "The debt was successfully deleted"
  redirect_to bill_debts_url    
end

话虽如此,我不确定Bill为什么会被摧毁......