为什么摧毁行动不被解雇?

时间:2010-12-02 21:18:36

标签: ruby-on-rails

我正在使用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动作。我不知道为什么会这样?

5 个答案:

答案 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)