Mam hook before_filter w kontrolerze aplikacji mojej głównej aplikacji, który robi coś takiego: (To nie tylko umieszcza link w flashu, jest wiadomość, ale nie jest istotne dla pytanie, po prostu dostęp do trasy w metodzie)Trasy silnika w aplikacji kontrolera
class ApplicationController < ActionController::Base
before_filter :set_link
def set_link
flash[:notice] = items_path
end
end
działa to dobrze dla aplikacji, ale kiedy idę do kontrolerów dla silnika zrobiłem ja dostaję wyjątek
No route matches {:controller=>"items", :action=>"index"}
rozumiem że w silniku pomocnicy trasy są dla silnika, chyba że przedrostkiem d z main_app
więc zmianę sposobu w kontrolerze aplikacji do
def set_link
flash[:notice] = main_app.items_path
end
pozbywa wyjątkiem, ale ja naprawdę nie chcę tego robić. Czy istnieje inne rozwiązanie pozwalające silnikowi rozpoznać trasy główne?
EDIT:
Dzieje się tak również wtedy, gdy układ aplikacja wywołuje pomocników ścieżce. Jeśli więc silnik ma być zintegrowany z układem strony głównej, problem ten również się pojawi.
Co jest nie tak z 'main_app'? Poza tym, dlaczego wprowadzasz zależność w silniku od głównej aplikacji, w ten sposób twój silnik zależy od 'items_path' zdefiniowanej w ** każdej ** aplikacji, która z niego korzysta. To nie jest dobra praktyka, zwykle powinieneś używać tylko 'main_app.root_path' lub innych dobrze znanych tras (na przykład jeśli używasz opracować' sign_in_path'). – Fabio
items_path zostanie zdefiniowana w głównej aplikacji, która jest już zbudowana. I chcę mieć silnik zamontowany gdzieś, ale zintegrowany z układem bieżącej aplikacji. Sam silnik nigdy w ogóle nie odwołuje się do items_path. Po prostu chcę, aby widoki wygenerowane przez silnik zostały umieszczone w treści układu aplikacji. Układ aplikacji musi jednak mieć dostęp do tras głównych tras. – Olives
Jest to spowodowane tym, że silnik i aplikacja mają ten sam układ. W ten sposób, gdy użytkownik przechodzi ze strony głównej aplikacji do strony w silniku, nie ma widocznej różnicy między układem. – Olives