求助:用scaffold生成的项目无法实现删除功能
百度了下说我是缺少相应的javascript
所以我索性就把删除的代码改成RESTful的删除了
<td><%= link_to 'Destroy', product, :confirm => 'Are you sure?', :method => :delete %></td>
改成了
<td><%= link_to 'Destroy', product_path(product),:confirm => 'Are you sure?', :method => :delete %></td>
可是仍旧不能删除 求解
product_path加上后面的:method => :delete 已经可以确定是进行删除操作了 而且我也提供了参数 product_path(product)
为什么就是不能实现删除功能呢?
另附上controller中删除部分的代码片段:
def destroy
@product = Product.find(params[:id])
@product.destroy
respond_to do |format|
format.html { redirect_to(products_url) }
format.xml { head :ok }
end
end
[解决办法]
研究了很久找到的答案
destroy和show的URL是相同的,但是前者用的是delete请求(其实是post),后者是get请求。
这个post请求是用javascript生成的,进入show说明用的是get方法,javascript没有生效。(在3.0中咋
生效我也不知道)然后将rails升级到3.1.1,如果是rails 3.1,在生产环境部署的话,由于asset
pipeline的缘故,需要先rake assets:precompile 编译一下js和css,否则application.js是没有加载的
之后再scaffold个工程 删除功能实现了
哦耶~
[解决办法]
assests:precompile 就是压缩min css/js 开发环境下也是有JS的