2011-12-01 22 views
5

Co chcę zrobić, to mieć 2 różne kontrolery, klient i test_client. Kontroler klienta jest już zbudowany i chcę utworzyć kontroler test_client, którego mogę używać do zabawy z interfejsem użytkownika klienta i dostosowywania go w razie potrzeby. Próbuję głównie obejść weryfikację, którą wbudowałem w klienta i jego zależność od kontrolera administratora, który ładuje dane.Renderowanie widoku innego kontrolera

, więc chcę, aby kontroler test_client załadował przykładowy zestaw danych, a następnie renderował widok indeksu kontrolera klienta, aby umożliwić dostosowanie interfejsu użytkownika klienta. To wszystko.

Próbowałem to w sposobie indeksu test_clients:

class TestClient 
    def index 
     render :template => 'client/index' 
    end 
end 

ale pojawia się błąd, ponieważ nie można znaleźć partials klientów jak to jest, patrząc w obecnych kontrolerów widoku dla nich ...

Więc już się nad tym zastanawiałem i większość ludzi mówi, że nigdy nie powinieneś takiego telefonować, ale myślę, że ta sprawa jest uzasadnionym użyciem ... Po prostu muszę wymyślić, jak sprawić, by działał.

+0

Używasz gita? Ponieważ jest to przydatny przypadek użycia w przypadku oddziałów git IMHO. – lucapette

+0

W rzeczywistości używam svn, ale to jest dobry pomysł. Mogę spróbować tego w moim następnym projekcie. – german129

Odpowiedz

6

Będziesz musiał dostosować swój widok tak, aby ścieżka do częściowej, której potrzebujesz, miała postać 'controller/partial'. W tym przypadku prawdopodobnie 'client/partial'. Następnie możesz po prostu użyć render 'client/index' jak wcześniej.

Tak mówią gdzieś w widoku masz to:

<%= render :partial => 'info' %> 

Będziemy chcieli, aby zmienić go na to:

<%= render :partial => 'client/info' %> 
+0

to rozwiązanie działało dobrze, mimo że nie jestem wielkim fanem, że kontroler jest na sztywno zakodowany, ponieważ nie zmieni nic dla mnie, chyba że zmienię nazwę kontrolera. – german129

+1

Jeśli jest to częściowe użycie w wielu kontrolerach, zwykle umieszczam je w "app/views/shared', następnie robisz' render: partial => 'shared/info'' lub coś podobnego. Może zechce to nazwać lepiej. – Mario

0

Można to zrobić na wiele sposobów i każdy jest inny. Jednym ze sposobów, w jaki możesz to zrobić, jest umieszczenie twoich poszukiwaczy w prezencie. Następnie przekształć niektóre dane w widoku indeksu w częściowe lub możesz wyrenderować szablon z układem ustawionym na false.

Następnie w widoku podglądu klienta można wyrenderować ten indeks z prezenterem z nim powiązanym.

2

Konwersja widoki kontrolera klienckie podszablonów, tworzenie pustych widoki dla wszystkich działania w kontrolerze test_client, renderowanie częściowych klientów dla poszczególnych widoków test_client.

przykład:
widok klienta
index.html.erb do _index.html.erb

widok test_client
index.html.erb
w tym widoku, <% = czyni częściowe = > 'clients/index',: locals => {}%>

Powiązane problemy