删除数据库中的最后一条记录

时间:2012-11-04 17:42:56

标签: ruby-on-rails erb

我正在尝试删除最后一个数据库记录但是当我按下链接时,页面只是刷新而我什么也得不到:/

这是我的控制器:

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

有什么想法吗?

4 个答案:

答案 0 :(得分:1)

首先,您的操作名称应为destroy,而不是delete。默认情况下,method: :delete的链接会映射到名为destroy的操作。有关详细信息,请参阅此guide

其次,您可能希望在destroy操作结束时重定向到某个位置。例如,redirect_to root_path或其他任何合适的内容。

答案 1 :(得分:1)

我在跟踪same tutorial

时遇到了同样的错误

我将控制器更改为:

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

并将我的观点名称更改为destroy.html.erb。

这似乎对我有用。

答案 2 :(得分:0)

控制器操作应为:destroy

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

由于Rails有7项操作,其中包括:newshoweditindexdestroyupdate

因此请求将针对destroy行动。所以试试这个,这会有用。

答案 3 :(得分:0)

如前所述,你的行动应该被称为破坏,但这不是问题。 如果页面只刷新,则表示它不调用DELETE方法,否则您应该看到“找不到操作”错误,或者Rails应该运行默认的destroy方法。

您的问题可能与javascript有关。确保已启用它,并在application.html.erb页面上进行以下导入:

<%= javascript_include_tag :all %>

或者至少是rails.js文件,它是在更改默认方法时使link_to方法工作的文件:

<%= javascript_include_tag "rails" %>