Ruby on rails 4 如何在rails 4应用程序中删除记录

Ruby on rails 4 如何在rails 4应用程序中删除记录,ruby-on-rails-4,Ruby On Rails 4,我想从maodel中删除一条记录,但我有一个奇怪的行为: 当我从非空列表中删除一条记录时,它工作正常,但当该列表中仍然只有一条记录,并且我尝试删除它时,它会生成以下错误: 在paniers_controller.rb中: def enlever @p = Panier.find(params[:id]) @book = Book.where( id: @p.book_id).first if @p @book= Book.update(@p.book_id, nbr_ex

我想从maodel中删除一条记录,但我有一个奇怪的行为: 当我从非空列表中删除一条记录时,它工作正常,但当该列表中仍然只有一条记录,并且我尝试删除它时,它会生成以下错误: 在paniers_controller.rb中:

def enlever
  @p = Panier.find(params[:id])
  @book = Book.where( id: @p.book_id).first
   if  @p
    @book= Book.update(@p.book_id, nbr_exemplaires: @p.quantity)
    @p= Panier.destroy(@p.id)
    redirect_to detail_path
   end

  end
在paniers/detail.html.erb中

<tr><td>Reference du livre</td><td>prix du livre</td><td>Quantité</td><td>Services</td></tr>
  <% for p in @panier %>
    <tr>
      <td><%= p.book_id %></td><td><%= p.price%> $</td><td><%= p.quantity %></td><td><%= link_to 'enlever du panier', enlever_path(p), data: { confirm: 'Are you sure?' } %></td></tr>
      <% somme +=p.price * p.quantity %>
    <%end %>
在routes.rb中

获取“panier/enlever/:id”=>“paniersenlever”,如::enlever

我得到的错误是:

找不到“id”=23的窗格

在这方面:

@p=窗格。findparams[:id]


但是,尽管显示了此错误,记录还是从数据库中删除了

如果您想在视图中对@panier进行复数化,请检查您是否正在使用窗格列表而不是单个窗格初始化@panier-类似于:

# in paniers_controller.rb
def detail
  @panier = Panier.all
end

# in paniers/detail.html.erb
<% for p in @paniers %>
如果你想销毁@p,只需拨打@p.destroy。