2011-07-09 58 views
2

每次我删除或销毁的产品是赠品给我这个错误在我的控制台:找不到“对象”与ID = ActiveRecord的:: RecordNotFound

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和RAI ls-jquery并在我的应用程序布局中有csrf_meta_tag。我注意到的是,当我点击销毁链接并弹出窗口并说“你确定”时,我点击确定按钮,它会因为一些奇怪的原因而闪烁TWICE,直到我安装了Jquery才会这样做。我该如何解决?

编辑 - 答:

重新安装导轨jQuery的UJS>https://github.com/rails/jquery-ujs

你必须保持两个文件jquery.min.jsjquery.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 
+0

你可以发布型号代码吗?如果它很大,你可以在Github上添加一个链接。同样可以看到application.js。 – Midwire

+0

它的完成,我的application.js是空的,我还没有使用它。 – LearningRoR

+0

您是否最近从现有应用程序升级到3.1 rc?如果是这样,我会确保你已经卸载了所有旧的prototype.js文件。 –

回答

1

确保您在javascriptsrails.js文件?当你从原型移动到jquery时,标准的宁静DELETE不能正常工作了。 rails.js修复了这个问题,所以它可以正常工作。你可以参考Josh Huckabee的文章:http://joshhuckabee.com/jquery-rails-3。希望有帮助。

PS:另外请确保在您的布局中包含rails.js。类似这样的:

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

我刚下载了新的rails.js,仍然没有运气。我已经启用了所有样式表和javasheets(<%= javascript_include_tag:all,:cache => true,:recursive => true%>),但即使正确检测到它仍然没有效果。我认为它有什么与它重定向到产品/ ID当我刚刚删除产品,我将如何改变这一点? – LearningRoR

+1

如果确实是重定向,你可以通过'ruby-debug'找到,或者你可以在'destroy'方法中设置一个日志语句:'logger.debug(caller)',以及你认为它发生的任何地方。如果它正在被重定向,你应该能够看到,并从那里被调用。 – Midwire

+1

另外,你安装jquery时删除了原型吗?你有没有遵循这些相同的步骤:http://stackoverflow.com/questions/5053280/how-to-use-jquery-instead-of-prototype-in​​-a-rails-3-application – Midwire

1

该错误消息说,你正在努力寻找一个product在您的show操作中使用id 4。这里有两个问题。首先,除非您的产品ID确实是4,否则您可能从params[:id]获得nil。另一个问题是您正在执行show操作,而不是您的delete操作。这意味着您的路由不正确,或者http动词正在从DELETE更改为GET

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

+0

当我在我的产品/索引中时,我会将其删除,就像它说“显示,编辑,销毁”的常规脚手架一样。在我的数据库中,它也说明它是正确的产品,我相信当它停留在索引页面时,它将重定向到错误的位置。 – LearningRoR

相关问题