2016-01-13 110 views
1

我试图通过传递该记录的id来删除记录。代码如下所示:在删除Rails中的记录时找不到记录错误

def destroy_catalogue_entry 
    @catalogue_entry = CatalogueEntry.find(params[:catalogue_entry_id]) 
    if @catalogue_entry.destroy 
     flash[:success] = 'Catalogue entry deleted successfully.' 
    else 
     flash[:error] = 'Failed...' 
    end 
    end 

我收到了一个有趣的错误。当我的函数destroy_catalogue_entry把它叫做表明:

Couldn't find CatalogueEntry with 'id'=16 

但我如果条件部发表评论,并呈现@catalogue_entry为JSON,输出打印成功。那么怎么可能?我犯了一些愚蠢的错误还是有逻辑的原因。请赐教。

+0

什么是在此操作时在控制台中生成的sql查询? – Richlewis

+0

你可以在控制台中执行这些操作,并在此输出: –

回答

0

我认为destroy方法正在返回一个对象。在ruby中,if语句以外的任何东西都将被视为true。你可以放置摧毁方法,看看它的返回。

0

我相信你,

@catalogue_entry = CatalogueEntry.find(params[:catalogue_entry_id]) 

返回了错误,因为它不能与ID 6发现CatalogueEntry,请确保您有CatalogueEntry与该ID。

+0

你是对的,问题是相同的,但方式不同。现在它解决了。我已经添加了相同的答案。 – Imran

2

解决!我所做的一切是这样的:

def destroy_catalogue_entry 
    @catalogue_entry = CatalogueEntry.find(params[:catalogue_entry_id]) 
    if @catalogue_entry.destroy 
     flash[:success] = 'Catalogue entry deleted Successfully' 
     redirect_to action: :view_catalogue_entries, dc_id: @catalogue_entry.dc_id 
    else 
     flash[:success] = 'Failed...' 
    end 
    end 

当我看到控制台,该纪录是越来越成功删除,但之后,有对同一记录一个SELECT查询,这就是为什么它被扔的错误未能进行使用'id'= 16查找CatalogueEntry。当我重定向它时,问题解决了。