2013-08-17 31 views
0

我試圖做一個鏈接刪除項目...的link_to破壞GET請求的行動結果

<% @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

+0

什麼HTML爲link_to呈現? – Fred

+0

您是否嘗試過'link_to(「刪除!」,project_path(project),action :: delete)' – Fred

+0

您是否有公開回購的地方可以看到代碼? –

回答

1

粘貼您的rake routes輸出。我懷疑路線不匹配,這就是爲什麼它落在#show

確保您安裝了jquery-rails。

請參閱Delete/Destroy is not working in rails 3 with jQuery

一般來說,請確保您已包含所有必需的javascript文件。

+0

只是將它添加到上面的問題。 – emersonthis

+0

爲什麼我的問題連接到JavaScript? (Im a rails n00b) – emersonthis

+0

還有什麼是最好的檢查方法? – emersonthis

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?' } %> 
+0

嗨薩米,我試着用project_path(project)代替:action /:controller語法,我* STILL *得到一個get請求。 – emersonthis

+0

你可以顯示你的錯誤信息,最新的控制器的銷燬方法和鏈接標籤。 – Sami

+0

上面添加了錯誤消息。 – emersonthis

0

試試這個:

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

它應該工作。 如果沒有,請將服務器日誌粘貼到註釋中或嘗試檢查您生成的路徑。

或檢查你的軌道C:

app.project_path(Project.first) 

祝你好運!