0
在我的路線文件我有以下幾點:自定義路由重定向到錯誤的行動
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 GET /test_cases/test(.:format) test_cases#test
但是,如果我叫test_cases_test_url
從我重定向到一個test_cases#show
來看,沒有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'和'show'路由:'test_cases_test GET/test_cases/test(。:format)'和'test_case GET/test_cases /:id(。:format)''。只有理解(這可能看起來像一個愚蠢的問題,但這種路線問題有時會讓我困惑):看這些路線,當你說他們有相同的模式時,在這裏什麼是「相同的」? – rwehresmann
如果在控制檯中執行'rake routes',則可以看到匹配的模式。對於test_case路徑,:id是一個參數,可以是任何東西。所以,在這種情況下,「GET/test_case/」將會到'test_cases#show',並且「GET/test_case/test」將會到'test_case#test'。路線文件中應該首先限制更多的路線。路由用於兩個主要的事情 - 生成url字符串並將url請求匹配到controller#操作。它按照路由文件的順序匹配。這是抓住你的匹配部分,生成的URL按預期工作。 –
Swards
@rwehresmann - 在答案中增加了另一個選項,可能更適合您的情況 – Swards