我正在尝试在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>
如果有人可以告诉我错误的代码在哪里,我将不胜感激。
答案 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