2012-11-04 19 views
0

我試圖刪除最後一個數據庫記錄,但是當我按下鏈接時,頁面只是刷新,我沒有得到任何東西:/刪除最後記錄在數據庫中

這裏是我的控制器:

def delete 
    @todo_items = Todo.last 
    @todo_items.delete 
    end 

&這是我的看法

<h1>Shared Todo App</h1> 
    <p>All your todos here</p> 
<% @todo_items.each do |t| %> 
<li><%= t.todo_item %> 
<% end %> 

    <%= link_to 'Delete', todo_item, confirm: 'Are you sure?', method: :delete %> 

任何想法?

回答

1

首先,您的動作名稱應該是destroy,而不是delete。與method: :delete的鏈接將默認映射到名爲destroy的操作。有關詳細信息,請參閱此guide

其次,您可能想要在destroy操作結束時重定向某處。例如,redirect_to root_path,或其他適當的。

+0

我打算把這個重定向一次工作,但它仍然只是刷新頁面時,我點擊刪除。 在控制檯中沒有任何跡象表明已經進行了刪除嘗試。所以它看起來像我的控制器代碼在這裏是錯誤的,但我看不到問題:/ – Keva161

+0

你有任何機會禁用JavaScript?如果在禁用javascript的'link_to'中使用'method::delete',請求將回退到'GET'而不是'DELETE'。 – cdesrosiers

0

控制器動作要:destroy

def destroy 
    @todo_items = Todo.last 
    @todo_items.delete 
end 

如Rails有7個動作,包括:newshoweditindexdestroyupdate

因此請求將針對destroy操作。所以試試這個,這將起作用。

0

如前所述,你的行爲應該被稱爲銷燬,但這不是問題。 如果頁面只是刷新,這意味着它沒有調用DELETE方法,否則你應該看到「未找到操作」的錯誤,或者Rails應該運行默認的destroy方法。

你的問題可能與JavaScript。請確保您有它啓用,您有以下進口application.html.erb頁:

<%= javascript_include_tag :all %> 

或者至少,在rails.js文件,這是一個使該方法的link_to工作的時候繼same tutorial

<%= javascript_include_tag "rails" %> 
1

我碰到了同樣的錯誤來了我改變了我的控制器:您更改默認的方法

def destroy 
@todo_items = Todo.last 
@todo_items.destroy 
end 

並將我的視圖的名稱更改爲destroy.html.erb。

這似乎適用於我。