2012-05-07 41 views
0

私のアプリはトレーニングのスケジューラです。RailsルーティングとHTTP動詞

クライアントは通常、特定の日の3つのタイムスロットのいずれかでワークアウトを行うので、朝、昼または夜のワークアウトをスケジュールするためのクイックアドイン機能を提供しています。

私はコードは動作していますが、私は正しい方法でやっているとは思いません。次のように

私のルートは次のとおりです。

私はこのような何かを経由して使用
match 'workouts/quick_add/:date/:timeslot' => "workouts#quick_add", 
    :as => 'workout_quick_add' 

:リクエストがGET経由で来るが、それがない場合、これは動作しますが、今

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

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!私はコレクションルートを作って、 ':method =>:post'を使うようlink_toを更新しました。そして今はすべてが私が望むように動作します。ありがとう!あなたが 'コレクションのためにあなたの答えを編集するなら、私はupvoteして答えを受け入れるよ:) – DVG

+0

ああ、もちろん、コレクション。あなたは、更新しないで、作成を扱っています。訂正とupvoteをありがとう。乾杯。 –

関連する問題