2012-05-07 148 views
0

我的應用程序是一個鍛鍊調度程序。Rails路由和HTTP動詞

客戶通常在給定日期的三個時隙中的一個時間進行鍛鍊,所以我提供了一個快速添加功能來安排上午,中午或晚上鍛鍊。

我有代碼工作,但我認爲我沒有做正確的方式。

我的路線如下:

match 'workouts/quick_add/:date/:timeslot' => "workouts#quick_add", 
    :as => 'workout_quick_add' 

這一點我通過一些使用這樣的:

<%= link_to 'Morning Workout', workout_quick_add_path(:date => day, :timeslot => 'morning') %> 

現在,這個工作,如果請求進來了GET,但不基於HTTP協議方法定義似乎是正確的。看起來好像POST或PUT是對的,但如果我在路由中添加:via => :post:put,整個事情就會發生路由錯誤。

這裏什麼是正確的,什麼是正確的方法來實現這種功能?

回答

2

如何:

resources :workouts do 
    collection do 
    post :quick_add 
    end 
end 

傳遞日期和時隙params中。

+0

是的,這樣做時我得到路由錯誤。沒有路線匹配:action => quick_add,:controller =>訓練,:date => 2012-05-06,:timeslot => morning。這是使用quick_add_workout_path(:date => day,:timeslot =>'morning') – DVG

+1

aha!我使它成爲一個收集路線,並更新link_to以使用':method =>:post',現在一切都按照我想要的方式工作。謝謝!。如果你編輯你的答案'收藏',我會upvote並接受你的答案:) – DVG

+0

啊,當然是一個集合。你正在處理創建,而不是更新。感謝您的糾正和upvote。乾杯。 –