每次我删除或销毁一个产品时,它都会在我的控制台中给我这个错误:
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_meta_tag
。我注意到的是,当我点击销毁链接时,它弹出窗口并说“你确定”,我点击确定按钮,由于一些奇怪的原因它闪烁TWICE,它从来没有这样做,直到我安装Jquery。我该如何解决这个问题?
编辑 - 答案:
重新安装rails jquery-ujs> https://github.com/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
答案 0 :(得分:1)
错误消息显示您正在尝试在product
操作中找到id
show
4的nil
。那里有两个问题。首先,除非您的产品ID真的是4,否则您可能会从params[:id]
获得show
。另一个问题是,您处于delete
行动,而不是DELETE
行动。这意味着您的路由错误或者http动词正在从GET
更改为DELETE
。
闪烁两次可能是一个相关的症状,但有些你没有发送params
并且{{1}}哈希没有被传递。
答案 1 :(得分:1)
确保rails.js
中有javascripts
个文件?当您从原型移动到jquery时,标准的restful 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' %>