删除继续转到rails应用程序上的Show页面

时间:2016-01-12 05:27:44

标签: ruby-on-rails testing

我正在尝试在rails中创建一个博客,我遇到了一些麻烦。每当我尝试使用我的destroy方法测试从我的博客中删除文章时,我一直在获取show方法的页面。这是破坏方法:

def destroy
 @article = Article.find(params[:id])
 @article.destroy
 flash[:notice] = "Article has been deleted."
 redirect_to articles_path
end

这是主页的索引文件:

<h1>Listing all articles</h1>
<p>
   <%= link_to "Create new artilce", new_article_path %>
</p>
<table>
  <tr>
    <th>Titile</th>
    <th>Text</th>
  </tr>

  <% @articles.each do |article| %>
    <tr>
      <td><%= article.title %></td>
      <td><%= article.text %></td>
      <td><%= link_to 'Edit', edit_article_path(article) %></td>
      <td><%= link_to 'Show', article_path(article) %></td>
      <td><%= link_to 'Delete', article_path(article), method: :delete,  data: {confirm: "Are you sure?"} %></td>
   </tr>
     <% end %>
  </table>

如果有人可以告诉我错误的代码在哪里,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

几乎肯定是javascript / jquery问题。

Rails sets the "method" with a form,使用JQuery明确定义它:

  

此修饰符将动态创建HTML表单,并立即使用指定的HTTP谓词提交表单以进行处理。用于让链接在危险操作中执行POST操作非常有用,例如删除记录(搜索机器人可以在抓取您的站点时跟踪)。支持的动词有:post,:delete,:patch和:put。 请注意,如果用户禁用了JavaScript,请求将回退到使用GET

因此,如果您禁用了Javascript / JQuery,则link_to将只是GET,它会将请求发送到show操作。

-

您需要确保拥有以下内容:

#app/views/layouts/application.html.erb
<%= javascript_include_tag :application %>

#app/assets/javascripts/application.js
//= require jquery
//= require jquery_ujs