我正在使用Rails 3并试图了解为什么Destroy动作没有被解雇!我的html被定义如下:
<%= link_to "Delete", :action => "destroy", :id => article, :method => :delete, :confirm => "are u sure?" %>
这是ArticlesController:
def destroy
@article = Article.find(params[:id])
@article.destroy
respond_to do |format|
format.html { redirect_to articles_url }
end
end
当我点击“删除”链接时,它会将我带到show动作。我不知道为什么会这样?
答案 0 :(得分:5)
您的link_to
应为:
<%= link_to "Delete", @article, :method => :delete, :confirm => "are u sure?" %>
这会为您的文章生成正确的网址,然后转到destroy
操作。
答案 1 :(得分:1)
您是否删除了位于rails应用的javascripts
目录中的public
目录?
如果是,请创建一个新的rails项目并复制实际项目中的javascripts
目录
答案 2 :(得分:1)
确保您的application.js包含以下行:
//= require jquery_ujs
这解决了我的问题。
答案 3 :(得分:0)
第一行应该是
@article = Article.find(params[:id])
进行此更改后,您将无法重定向到@article,因为它将会消失;你可能需要用redirect_to articles_url
替换最后一行。全新方法将是:
def destroy
@article = Article.find(params[:id])
@article.destroy
respond_to do |format|
format.html { redirect_to articles_url}
end
end
如果您遇到类似这样的问题,请尝试使用rails generate scaffold Test
创建一个支架模型,以查看默认选项。
答案 4 :(得分:0)