Удалить маршрут во вложенном ресурсе в рельсах 3.1 - PullRequest
0 голосов
/ 07 января 2012

У меня есть вложенные ресурсы:

resources :bills do
  resources :debts
end

и когда я делаю ссылку для удаления в индексе 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 Ответ

1 голос
/ 07 января 2012

У вас есть 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 вообще уничтожается ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...