我的路线如此列出时收到错误:
resources :coupons
get 'coupons/redeem_coupon', to: 'coupons#redeem_coupon', as: 'redeem_coupon'
错误是:
ActiveRecord::RecordNotFound - Couldn't find Coupon with 'id'=redeem_coupon:
当我将订单撤销到:
get 'coupons/redeem_coupon', to: 'coupons#redeem_coupon', as: 'redeem_coupon'
resources :coupons
工作正常。我知道资源会创建这些路线
GET /coupons
GET /coupons/new
POST /coupons
GET /coupons/:id
GET /coupons/:id/edit
PATCH/PUT /coupons/:id
DELETE /coupons/:id
首先列出我的自定义路线,更具体或覆盖其他路线?为什么订单很重要?
答案 0 :(得分:4)
您获得的错误是因为rails尝试从上到下开始匹配路由。如果您尝试将自定义路由添加到现有资源,则更简单的方法是执行此操作。 collection
如果您想在群组中使用member
,则resources :coupons do
collection do
get 'redeem_coupon'
end
end
是您要将自定义路由添加到单个资源。
{{1}}
答案 1 :(得分:2)
首先列出您的自定义路线,您将覆盖其他路线。当rails收到请求时,它只是从routes.rb
文件的顶部开始,并与首先匹配的路径一起使用。