You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Rails 5.1.4 & Ruby 2.4.1:为何DELETE请求无destroy_visitor_path?

Rails中DELETE请求对应的路由辅助方法说明

嘿,我来帮你捋清楚这个疑惑~

首先要明确:你找的destroy_visitor_path其实并不存在,这是Rails RESTful路由的正常设计!

为什么没有destroy_visitor_path?

在Rails的RESTful路由规则里,删除单个资源的操作,复用了单个资源的路由辅助方法visitor_path,通过HTTP请求方法来区分不同的动作:

  • 当使用GET方法调用visitor_path(@visitor)时,对应visitors#show动作(获取资源详情)
  • 当使用DELETE方法调用visitor_path(@visitor)时,对应visitors#destroy动作(删除资源)

看你提供的路由列表:

DELETE /visitors/:id(.:format) visitors#destroy

这条路由对应的辅助方法就是visitor_path,只是需要指定请求方法为DELETE。

正确的使用方式

在视图中调用删除链接时,应该这样写:

<%= link_to '删除访客', visitor_path(@visitor), method: :delete, data: { confirm: '确定要删除该访客吗?' } %>

在控制器或其他地方发起请求时,也需要指定DELETE方法,比如用redirect_to或者HTTP客户端调用时。

可选:手动创建destroy_visitor_path(不推荐)

如果你确实想要一个命名为destroy_visitor_path的路由,可以手动添加,但这不符合Rails的RESTful约定,不建议这么做:

# 在routes.rb中添加
delete '/visitors/:id', to: 'visitors#destroy', as: :destroy_visitor

内容的提问来源于stack exchange,提问作者user8773096

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:06:50