link_to destroy动作导致获取请求

时间:2013-08-17 01:19:34

标签: ruby-on-rails ruby ruby-on-rails-4

我正在尝试建立删除项目的链接......

  <% @projects.each do |project| %>
    <h2><%= project.name %> (<%= project.videos.size %>)</h2> 
      <%= link_to("Delete!", {:controller=>'projects', :action=>'destroy', :id=>project.hashed_id}, {method: :delete} ) %>
  <% end %>

无论我做什么,我都会得到一个get请求,所以我最终会看到项目/节目视图。 Urrrgh!

我的控制器:

  def destroy
    @project = Project.where( :hashed_id=> params[:id]).first.destroy()
    flash[:notice]= "Project deleted"
    redirect_to(:action=>'index')
  end

我错过了什么?

PS:我找到this,但解决方案对我不起作用。

更新

$ rake routes
      Prefix Verb   URI Pattern                  Controller#Action
        root GET    /                            pages#home
    projects GET    /projects(.:format)          projects#index
             POST   /projects(.:format)          projects#create
 new_project GET    /projects/new(.:format)      projects#new
edit_project GET    /projects/:id/edit(.:format) projects#edit
     project GET    /projects/:id(.:format)      projects#show
             PATCH  /projects/:id(.:format)      projects#update
             PUT    /projects/:id(.:format)      projects#update
             DELETE /projects/:id(.:format)      projects#destroy

更新2 这是我得到的错误:

enter image description here

3 个答案:

答案 0 :(得分:1)

粘贴rake routes的输出。我怀疑路线不匹配,这就是它落到#show的原因。

确保您也安装了jquery-rails。

请参阅Delete / Destroy is not working in rails 3 with jQuery

通常,请确保您已包含所有必需的javascript文件。

答案 1 :(得分:0)

做这样的事情:

控制器:

def destroy
  Flower.find(params[:id]).destroy
  redirect_to :action => 'index'
end

查看:

<%= link_to 'Destroy', flower_path(flower), method: :delete, data: { confirm: 'Are you sure?' } %>

答案 2 :(得分:0)

试试这个:

<%= link_to 'Destroy', project_path(project), method: :delete %>

它应该工作。 如果没有,请将服务器日志粘贴到注释中或尝试检查生成的路径。

或者查看你的导轨c:

app.project_path(Project.first)
祝你好运!