У меня есть ситуация с двойным пространством имен, где мои контроллеры выглядят так:
CandidateController
Candidate::PerformanceController
Candidate::Performance::ReviewController
В Rails 2 я смог использовать redirect_to
с контроллера Candidate::Performance::ReviewController
для перенаправления надействие в CandidateController
, вот так:
class Candidate::Performance::ReviewController < ApplicationController
before_filter :ensure_manager
# ...
def ensure_manager
if !current_user.manager?
flash[:warning] = t(:must_be_manager)
redirect_to :controller => '/candidate', :action => :index
end
end
end
/
в controller => '/candidate'
позволит Rails перенаправить с app.com/performance/reviews
на app.com/candidate
.
Однако этопохоже, не работает так же в Rails 3.1.Вместо этого мой redirect_to
переходит на app.com/candidate//candidate
.Как правильно указать «абсолютный» контроллер в хэше redirect_to
(т. Е. Без использования помощника пути)?
Обновление: Я знаюэто было бы бесконечно проще, если бы я просто использовал именованные помощники маршрута (т.е. candidate_path
).К сожалению, в нашей кодовой базе есть много устаревшего кода, который не использует RESTful-маршрутизацию и вместо этого использует маршрут по умолчанию «catch-all»;то есть.у нас много действий без названного маршрута к резервному.