をリダイレクト:カスタムルートは、私は私のroutesファイルに次のように持っている間違った行動に
resources :exercises, shallow: true do
resources :questions do
resources :test_cases do
member do
post :run, to: 'test_cases#run'
end
end
end
end
get 'test_cases/test', to: 'test_cases#test'
私の問題は、リソースの外に、test
ルートです。私はそれがどうあるべきか全くtest_cases#test
、私はtest_cases#show
にリダイレクトしていビューからtest_cases_test_url
を呼び出していない場合は、しかし、
test_cases_test GET /test_cases/test(.:format) test_cases#test
:私は私が望むものを持っている利用可能なルートを確認します。 This questionは別の状況ではほぼ同じ問題です。私はget 'test', to: 'test_cases#test'
を私のresources :test_cases
の中に入れてmember
のブロックの中に入れたら、私のルートにquestion_idがあり、member
はtest_case_idをブロックするので、受け入れられた答えに従いたくありません。私はこれらのIDは必要ありません。
希望のルート(test_cases/test
)が機能するようにするオプションはありますか?
優秀、@Swards推奨のだもう一つの方法は、
を提出あなたのルートの一番上に
test_cases/test
GETルートを移動します。出来た!これらは 'test_cases_test GET/test_cases/test(。:書式)'と 'test_case GET/test_cases /:id(。:書式)'の 'test'と' show'ルートです。理解しているに過ぎない(愚かな質問のように見えるかもしれませんが、このルートの問題は時々私を混乱させます):これらのルートを見て、同じパターンを持っていると言うと、exacltly " – rwehresmannコンソールで 'rake routes'を実行すると、一致するパターンを見ることができます。 test_caseパスの場合、:idはパラメータであり、何でもかまいません。ですから、この場合 "GET/test_case/"は 'test_cases#show'になり、" GET/test_case/test "は' test_case#test'に行きます。ルートファイルでは、より制限の厳しいルートが最初になければなりません。ルートは2つの主な目的、つまりURL文字列の生成とurlリクエストのコントローラ#アクションへの一致に使用されます。ルートファイルの順に一致します。それは、あなたをつかまえていた一致する部分です、生成URLは期待どおりに働いていました。 –
Swards
@rwehresmann - 答えに別のオプションを追加しました。おそらくあなたの状況に適しています – Swards