我在我的应用程序中安装了RailsAdmin引擎(根据 wiki 的说明),使用
mount RailsAdmin::Engine => '/backend', :as => 'rails_admin'
我不得不从引擎中扩展一个控制器来添加一个 before_filter。在开发中运行我的应用程序时,我的扩展程序和其他引擎功能运行良好。
但是,我在使用 Test::Unit为我的 before_filter编写功能测试时遇到了问题。过滤器在正确的时刻启动并按预期工作,但是一旦前过滤器“调整”的操作重定向到索引(这是预期结果),我会收到以下路由错误:
ActionController::RoutingError: 没有路由匹配 {:controller=>"rails_admin/main"}
导致异常的代码在于引擎重定向到索引或上一页的方法(引用类型);这是该方法的代码
def back_or_index
if params[:return_to].presence
参数[:return_to]
别的
索引路径
结尾
我发现在开发中运行应用程序时,由 index_path 触发的 url_for 调用提供了正确的path_segments (即: :model_name => 'user' ),以便匹配下面的路由
index GET|POST /:model_name(.:format) rails_admin/main#index
另一方面,在运行测试时,未提供 path_segments,因此在查找匹配路由时不满足:model_name约束。
由于我是引擎新手,有人可以告诉我我缺少什么吗?
在我看来,引擎似乎应该考虑到安装生成 index_path 的事实,但正如我所说,我不是这方面的专家......