我正在使用Rails 5.2.0,只是试图创建一个包含所有CRUD函数的简单博客。我可以创建/编辑帖子,但无法删除它们。我收到的错误消息:
No route matches [DELETE] "/articles"
我的 routes.rb 中有resources :articles
命令
文章控制器
def destroy
@article = Article.find(params[:id])
respond_to do |format|
format.html { redirect_to articles_url notice: 'Article was successfully deleted.' }
format.json { head :no_content }
end
显示页面链接:
<%= link_to 'Delete', article_path(@article), method: :delete, data: {confirm: "Are you sure"} %>
看,我认为您错过了该对象,例如如果您的delete
链接到each
循环,那么它肯定有一个像@articles.each do |article|
这样的对象,这意味着对象名称article
因此在删除链接上您需要像这样传递对象
<%= link_to 'Delete', article_path(article), method: :delete, data: {confirm: "Are you sure"} %>
@article
article
,请重构代码。
并像这样更新destroy
方法
def destroy
@article = Article.find(params[:id])
@article.destroy
respond_to do |format|
format.html { redirect_to articles_url notice: 'Article was successfully deleted.' }
format.json { head :no_content }
end
end
如果对您没有帮助,请从日志文件中复制并粘贴您的错误日志。
希望它会有所帮助。
运行rails routes
.
您的destroy route
可能是这样的:
DELETE /articles/:id(.:format)
*您必须指定要销毁的ID!
A Tour of Rails' jQuery UJS 确保Jquery文件已正确加载到您的 rails 项目中。阅读上面的链接以获取更多信息。
试试这个
def destroy
@article = Article.find(params[:id]
@article.destroy
respond_to do |format|
format.html { redirect_to articles_url}
format.json { head :no_content }
end
end