我正在尝试删除最后一个数据库记录但是当我按下链接时,页面只是刷新而我什么也得不到:/
这是我的控制器:
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 %>
有什么想法吗?
答案 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项操作,其中包括:new
,show
,edit
,index
,destroy
和update
。
因此请求将针对destroy
行动。所以试试这个,这会有用。
答案 3 :(得分:0)
如前所述,你的行动应该被称为破坏,但这不是问题。 如果页面只刷新,则表示它不调用DELETE方法,否则您应该看到“找不到操作”错误,或者Rails应该运行默认的destroy方法。
您的问题可能与javascript有关。确保已启用它,并在application.html.erb页面上进行以下导入:
<%= javascript_include_tag :all %>
或者至少是rails.js文件,它是在更改默认方法时使link_to方法工作的文件:
<%= javascript_include_tag "rails" %>