读书人

:用scaffold生成的项目无法实现删除功

发布时间: 2012-12-14 10:33:08 作者: rapoo

求助:用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的

读书人网 >Ruby Rails

热点推荐