2011-12-01 17 views
5

Lo que quiero hacer es tener 2 controladores diferentes, cliente y cliente_test. El controlador del cliente ya está creado y quiero crear un controlador test_client que pueda usar para jugar con la interfaz de usuario del cliente y ajustarlo según sea necesario. Principalmente trato de evitar la validación que he incorporado al cliente y su dependencia de un controlador de administración que carga los datos.Renderizar una vista de otro controlador

por lo que quiero que el controlador test_client cargue un conjunto de datos de muestra y luego muestre la vista de índice del controlador del cliente para que pueda ajustar la IU de los clientes. Eso es todo.

He intentado esto en el método del índice test_clients:

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

pero me da un error porque no puede encontrar los parciales de clientes, ya que está mirando en los controladores de vista actual para ellos ...

Así que ya he investigado esto y la mayoría de la gente dice que nunca debería hacer esa llamada, pero creo que este es un uso razonable ... Solo necesito descubrir cómo hacerlo funcionar.

+0

¿Estás usando git? Porque este es un buen caso de uso para git branches en mi humilde opinión. – lucapette

+0

En realidad estoy usando svn, pero esa es una buena idea. Podría intentar eso en mi próximo proyecto. – german129

Respuesta

6

Deberá ajustar su vista para que la ruta al parcial que necesita tenga el formato 'controller/partial'. En este caso probablemente 'client/partial'. Entonces simplemente puede usar render 'client/index' como antes.

lo tanto, decir algún lugar de la vista que se tiene esto:

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

Usted tendrá que cambiarlo a esto:

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

esta solución funcionó bien, aunque no soy un gran fan de tener el controlador codificado allí no va a afectar nada a menos que cambie el nombre del controlador. – german129

+1

Si este es un parcial utilizado en múltiples controladores, normalmente los pongo en 'app/views/shared', luego haces' render: partial => 'shared/info'' o algo similar. Podría querer nombrarlo mejor entonces. – Mario

0

Puede hacer esto de varias maneras y cada persona es diferente. Una forma de hacerlo es colocar los buscadores en un presentador. A continuación, convierta algunos datos en la vista de índice en un parcial o puede renderizar la plantilla con el diseño establecido en falso.

Luego, en la vista client_test, puede representar ese índice con el presentador asociado.

2

Convertir sus puntos de vista del controlador de cliente para los parciales, crear vistas de vacío para todos acciones en el controlador test_client, render parciales de cliente para respectivas vistas de prueba_cliente.

Ejemplo:
vista de cliente
index.html.erb a _index.html.erb

vista test_client
index.html.erb
en esta vista, <% = render: parcial = > 'clients/index',: locals => {}%>

Cuestiones relacionadas