Я смонтировал в своем приложении движок RailsAdmin (по инструкции из вики), используя
mount RailsAdmin::Engine => '/backend', :as => 'rails_admin'
Мне пришлось расширить один контроллер из движка, чтобы добавить файл before_filter. При запуске моего приложения в разработке мое расширение и другие функции движка работают отлично.
Однако у меня возникла проблема с написанием функциональных тестов с использованием Test::Unit для моего файла before_filter. Фильтр срабатывает в нужный момент и работает так, как ожидалось, но как только действие, «настроенное» фильтром до, перенаправляется на индекс (что является ожидаемым результатом), я получаю следующую ошибку маршрутизации:
ActionController::RoutingError: маршрут не соответствует {:controller=>"rails_admin/main"}
Код, приводящий к исключению, заключается в методе движка для перенаправления на индекс или на предыдущую страницу (вид реферера); вот код метода
защита back_or_index
если params[:return_to].presence
параметры[:return_to]
еще
index_path
конец
Я обнаружил, что при запуске приложения в разработке вызов url_for, инициированный index_path, поставляется с правильными path_segments (т. е.: :model_name => 'user'), чтобы указанный ниже маршрут соответствовал
index GET|POST /:model_name(.:format) rails_admin/main#index
С другой стороны, при выполнении тестов path_segments не предоставляются, поэтому ограничение :model_name не выполняется при поиске соответствующего маршрута.
Поскольку я новичок в двигателях, может ли кто-нибудь сказать мне, что мне не хватает?
Мне кажется, что движок должен учитывать тот факт, что он монтируется, генерируя index_path, но, как я уже сказал, я не эксперт в этом....
use_route
в вызове спецификации вашего контроллера? Вот пример из двигателя, над которым я работал. github.com/twinge/questionnaire_engine/blob/engine/spec/ - person westonplatter   schedule 07.02.2013