我有一个先前已经记录过的问题,但在我的案例中我无法解决这个问题。这是关于入门指南的5.13部分,该部分涉及删除条目。
首先是我的控制器:
def destroy
@article = Article.find(params[:id])
@article.destroy
redirect_to articles_path end
我的观点
<% @articles.each do |article| %>
<tr>
<td><%= article.title %></td>
<td><%= article.text %></td>
<td><%= link_to 'Show', article_path(article) %></td>
<td><%= link_to 'Edit', edit_article_path(article) %></td>
<td><%= link_to 'Destroy', article_path(article), method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr> <% end %>
根据这个帖子:Rails 4 link_to Destroy not working in Getting Started tutorial
我已将 link_to 修改为 button_to ,它可以正常工作。但这并没有真正解释为什么教程位不起作用。
我还确保了&#39; jquery-rails&#39; gem在gemfile中。我还检查了我的app / assets / javascript / application.js文件:
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require_tree .
根据这个帖子Delete link sends "Get" instead of "Delete" in Rails 3 view我检查了我的app / views / layouts / application.html.erb文件,它看起来像:
<!DOCTYPE html>
<html>
<head>
<title></title>
<%= stylesheet_link_tag 'default', media: 'all', 'data-turbolinks-track' => true %>
<%= javascript_include_tag 'default', 'data-turbolinks-track' => true %>
<%= csrf_meta_tags %>
</head> <body>
<%= yield %>
</body>
</html>
我在Chrome和Firefox中都尝试过。仍然无法工作。
答案 0 :(得分:1)
如果问题是为什么它必须是button_to而不是link_to,那么它非常简单。现代浏览器不会为链接(锚标签)实现GET以外的动词。它与网络和浏览器的历史有关。 Rails需要DELETE动词才能查找destroy动作。为了绕过约束,button_to生成一个带有正确动词的表单(rails中的方法)和正确的路径。
答案 1 :(得分:0)
如果您直接从Rails网站复制和粘贴,您可能会混淆缩进。尝试清理代码并坚持一种缩进方式,例如水龙头或空间。