RailsAdminエンジン(wikiの指示に従って)を使用してアプリにマウントしました
RailsAdmin :: Engine =>'/ backend'、:as=>'rails_admin'をマウントします
before_filterを追加するには、エンジンから1つのコントローラーを拡張する必要がありました。開発中のアプリを実行しているとき、拡張機能とその他のエンジン機能は完全に機能しています。
ただし、before_filterにTest::Unitを使用して機能テストを作成する際に問題が発生します。フィルタは適切なタイミングで起動し、期待どおりに機能しますが、beforeフィルタによって「微調整」されたアクションがインデックスにリダイレクトされると(これは期待される結果です)、次のルーティングエラーが発生します。
ActionController :: RoutingError:一致するルートがありません{:controller => "rails_admin / main"}
例外につながるコードは、インデックスまたは前のページ(リファラーの一種)にリダイレクトするエンジンのメソッドにあります。これがメソッドのコードです
def back_or_index
params [:return_to].presenceの場合
params [:return_to]
そうしないと
index_path
終わり
開発中のアプリを実行すると、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を生成するためにマウントされているという事実を考慮に入れる必要があるように見えますが、私が言ったように、私はこれの専門家ではありません...。