編輯我的Rails 4應用程序routes.rb文件,我得到意想不到的行爲(意外的形式,我的觀點)。Rails 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部分,那麼它會創建它自己的路徑,這是我所期望的。
有人可以解釋爲什麼會發生這種情況嗎?
現在我無法在任何源代碼中找到它,但我很確定動態路由沒有默認命名,您必須通過將'as:'bookings_withdraw''(在這種情況下)添加到這是預期的行爲。 – zrl3dx
這就是 - 謝謝。我沒有意識到這一點。非常感謝! – tommyd456
如果您想將其添加爲答案,我會將其標記爲正確。 – tommyd456