Ruby on rails 不能';“找不到”;“对象”;ID=ActiveRecord::RecordNotFound的

Ruby on rails 不能';“找不到”;“对象”;ID=ActiveRecord::RecordNotFound的,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,每次我删除或销毁产品时,它都会在我的控制台中显示以下错误: ActiveRecord::RecordNotFound (Couldn't find Product with ID=4): app/controllers/products_controller.rb:16:in `show' 在页面上给出: ActiveRecord::RecordNotFound in ProductsController#show Couldn't find Product with ID=4 在我的

每次我删除或销毁产品时,它都会在我的控制台中显示以下错误:

ActiveRecord::RecordNotFound (Couldn't find Product with ID=4):
  app/controllers/products_controller.rb:16:in `show'
在页面上给出:

ActiveRecord::RecordNotFound in ProductsController#show

Couldn't find Product with ID=4
在我的产品控制器中,我只有一个常规支架:

def show
    @product = Product.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @product }
    end
  end

def destroy
    @product = current_user.products.find(params[:id]) #current user deletes own
    @product.destroy

    respond_to do |format|
      format.html { redirect_to(products_url) }
      format.xml  { head :ok }
    end
  end
我使用的是Rails Jquery UJS和Rails Jquery,在我的应用程序布局中有
csrf\u meta\u标记。我注意到的是,当我点击destroy链接时,它会弹出窗口说“你确定吗”,我点击OK按钮,它会因为一些奇怪的原因闪烁两次,直到我安装了Jquery,它才这样做。我该如何解决这个问题

编辑-回答:

重新安装rails jquery ujs>

您必须保留两个文件
jquery.min.js
jquery.js
。我删除了jquery.min.js,因为我认为它是一个最小化的版本,但显然不是,以下是我所有来自jquery ujs的文件:

   jquery.js
   jquery.min.js
   jquery_ujs.js
   rails.js # i had to install this manually from the link (or zip file)
   jquery-ui # i wanted the user interface too

错误消息表示您正试图在
show
操作中查找id为
4的
产品。这里有两个问题。首先,除非您的产品的id真的是4,否则您可能会从
params[:id]
获得
nil
。另一个问题是,您正在执行
show
操作,而不是
delete
操作。这意味着您的路由错误,或者http谓词正在从
DELETE
更改为
GET


闪烁两次可能是一个相关症状,但您如何不发送
DELETE
params
散列没有被传递。

确保
javascripts
中有
rails.js
文件?当您从prototype移动到jquery时,标准的restful
DELETE
不再正常工作。js修复了这一问题,使其再次正常工作。您可以在此处参阅Josh Huckabee的文章:。希望这能有所帮助

另外,还要确保在布局中包含
rails.js
。大概是这样的:

<%= javascript_include_tag 'jquery-1.4.4.min', 'jquery-ui-1.8.7.custom.min', 'rails', 'application' %>


您可以发布型号代码吗?如果它很大,你可以在Github上放置一个指向要点的链接。如果能看到application.js.Its完成了,我的application.js是空的,我还没有用过。你最近有没有从现有的应用升级到3.1rc?如果是这样的话,我会确保你已经卸载了所有旧的prototype.js东西。我刚刚下载了新的rails.js,但仍然没有成功。我已经启用了所有的样式表和javasheets(true,:recursive=>true%>),但即使检测正确,也没有什么好处。我认为这与我刚删除产品时重定向到产品/id有关,我将如何更改它?如果它确实是重定向,您可以使用
ruby debug
或在
destroy
方法中设置如下日志语句:
logger.debug(caller)
,不管你认为它会去哪里。如果它被重定向,您应该能够看到它,以及从何处调用它?您是否遵循了相同的步骤:是的,我删除了原型,我知道jquery工作正常,因为我在让jquery自动完成工作时遇到了问题。我发现了这个问题,它发送了一个GET而不是DELETE,这可以改变吗?是的,我也遇到了这个问题,因为没有正确安装jquery。您能否呈现有问题的视图并发布删除链接的HTML?我相信我们可以追根究底。当我在我的产品/索引中时,我会删除它,就像一个普通的脚手架,上面写着“显示、编辑、销毁”。在我的数据库中,它说它也是正确的产品,我相信问题是它应该停留在索引页时重定向到错误的位置。