“入门RAILS教程”后无法删除条目

时间:2015-12-04 23:56:41

标签: ruby-on-rails-4

我有一个先前已经记录过的问题,但在我的案例中我无法解决这个问题。这是关于入门指南的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中都尝试过。仍然无法工作。

2 个答案:

答案 0 :(得分:1)

如果问题是为什么它必须是button_to而不是link_to,那么它非常简单。现代浏览器不会为链接(锚标签)实现GET以外的动词。它与网络和浏览器的历史有关。 Rails需要DELETE动词才能查找destroy动作。为了绕过约束,button_to生成一个带有正确动词的表单(rails中的方法)和正确的路径。

答案 1 :(得分:0)

如果您直接从Rails网站复制和粘贴,您可能会混淆缩进。尝试清理代码并坚持一种缩进方式,例如水龙头或空间。