编辑我的 Rails 4 应用程序 routes.rb 文件,我得到了意想不到的行为(无论如何,我的观点是出乎意料的)。
我正在尝试创建一个更新预订记录的链接。我在我的 BookingsController 中创建了一个名为 WITHDRAW 的操作,准备好处理更新过程。我希望链接传递预订 ID,我的链接代码是这样的:
<%= link_to "Withdraw this booking", bookings_withdraw_path(@booking), :confirm => "Are you sure you want to withdraw this booking?", :method => :patch %>
当我尝试设置此链接的路线时,我的问题出现了。如果我将以下行添加到我的路由文件中:
match 'bookings/withdraw/:bid' => 'bookings#withdraw', via: 'patch'
然后当我运行 rake 命令来检查它显示的路线时:
bookings_withdrawn GET /bookings/withdrawn(.:format) bookings#withdrawn
PATCH /bookings/withdraw/:bid(.:format) bookings#withdraw
如您所见, WITHDRAW 路径是上述路径的一部分(顺便说一下,WITHDRAWN 是不同的路径)。如果我从路径中删除 /:bid 部分,那么它会创建自己的路径,这是我所期望的。
有人可以解释为什么会这样吗?