我正在尝试通过传递该记录的ID来删除记录。代码如下所示:
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 :(得分: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
查询,这就是为什么抛出错误无法找到CatalogueEntry使用' id' = 16 。当我重定向它时,问题就解决了。
答案 1 :(得分:0)
我认为destroy方法正在返回一个对象。在ruby中,除if或null之外的任何内容都将在if语句中变为true。你可以使用destroy方法并查看它返回的内容。
答案 2 :(得分:0)
我认为你的,
@catalogue_entry = CatalogueEntry.find(params[:catalogue_entry_id])
返回该错误,因为它无法找到id为6的CatalogueEntry,请确保您的CatalogueEntry具有该ID。