2013-09-05 44 views
2

無法找出此路由問題:我從我的更新控制器操作重定向到修改後的@timecard,並得到以下錯誤:無路由匹配[PATCH]「/ timecards」重定向到@timecard導致'沒有路由匹配[PATCH]「/ timecards」

爲什麼rails會嘗試使用PATCH重定向到timecards#index?

這不是我如何重定向到最近編輯的@timecard?

timecards_controller.rb

輸出的
def edit 
    @timecard = Timecard.find(params[:id]) 
    end 

    def update 
    @timecard = Timecard.find(params[:id]) 
    @timecard.update_attributes!(timecard_params) 
    redirect_to @timecard 
    end 

耙路線

$ rake routes 
         Prefix Verb URI Pattern             Controller#Action 
    timecard_timecard_entries GET /timecards/:timecard_id/timecard_entries(.:format)   timecard_entries#index 
          POST /timecards/:timecard_id/timecard_entries(.:format)   timecard_entries#create 
new_timecard_timecard_entry GET /timecards/:timecard_id/timecard_entries/new(.:format)  timecard_entries#new 
edit_timecard_timecard_entry GET /timecards/:timecard_id/timecard_entries/:id/edit(.:format) timecard_entries#edit 
    timecard_timecard_entry GET /timecards/:timecard_id/timecard_entries/:id(.:format)  timecard_entries#show 
          PATCH /timecards/:timecard_id/timecard_entries/:id(.:format)  timecard_entries#update 
          PUT /timecards/:timecard_id/timecard_entries/:id(.:format)  timecard_entries#update 
          DELETE /timecards/:timecard_id/timecard_entries/:id(.:format)  timecard_entries#destroy 
        timecards GET /timecards(.:format)          timecards#index 
          POST /timecards(.:format)          timecards#create 
       new_timecard GET /timecards/new(.:format)         timecards#new 
       edit_timecard GET /timecards/:id/edit(.:format)        timecards#edit 
        timecard GET /timecards/:id(.:format)         timecards#show 
          PATCH /timecards/:id(.:format)         timecards#update 
          PUT /timecards/:id(.:format)         timecards#update 
          DELETE /timecards/:id(.:format)         timecards#destroy 
         root GET /               timecards#index 

回答

0

的問題是自然的視圖。感謝@sircapsalot指向我的日誌,這表明錯誤的路由確實被調用(從視圖中的錯誤鏈接)。

1

當你調用redirect_to你應該指定路徑..不一定對象本身。

嘗試,

def update 
    @timecard = Timecard.find(params[:id]) 
    @timecard.update_attributes!(timecard_params) 
    redirect_to timecard_path(@timecard) 
end 
+0

相同**路由錯誤**頁面說:沒有路由匹配[PATCH]「/ timecards」:( – Yaya

+0

真的嗎?因爲'timecard_path'匹配時間卡的GET路由..問題必須發生在'@timecard .update_attributes!'你能否確認是否更新了時間卡? – sircapsalot

+0

感謝您指向我的日誌...更新操作似乎沒有被調用,編輯操作被調用: '已啓動GET「/ timecards/3 /編輯「爲127.0.0.1在2013-09-05 18:53:24 + 0300' 但更新操作不是: '已啓動PATCH」/ timecards「爲127.0.0.1在2013-09-05 18: 53:36 + 0300' – Yaya

相關問題