2011-01-06 17 views
5

Desde la vista de lista de mi aplicación, puedo ver una lista de registros o desglosar y editar/actualizar un registro. Después de actualizar, quiero volver directamente a la vista de lista, evitando un par de páginas intermedias, pero no quiero simplemente link_to(:action => list) - hay paginación involucrada. Quiero volver a la página de 'lista' exacta de donde vengo. ¿Cuál es la mejor manera? ¿Pasar un arg escondido a alguna parte con el número de página? ¿Hay una forma elegante de lograr esto?¿Cómo ir 'atrás' 2 niveles?

Respuesta

7

Voy a lanzar este con la advertencia de que puede haber consideraciones de seguridad o gemas existentes.

En su acción de edición, puede almacenar la página anterior en una sesión. Luego, en su acción de actualización, redirija a ella.

class MyController < ApplicationController 

    def edit 
    session[:prev_url] = request.referer 
    end 

    def update 
    redirect_to session[:prev_url] 
    end 

end 
2

Como alternativa para utilizar la sesión, puede llevar el referer a través de las acciones usando un campo de formulario oculto.

class MyController < ApplicationController 

    def edit 
    @prev_url = request.referer 
    end 

    def update 
    redirect_to params[:prev_url] 
    end 

end 

formulario utilizando hidden_field:

f.hidden_field :prev_url, :value => @prev_url 

Si no desea llevar a lo largo de toda la url árbitro también se podría hacer lo mismo con el parámetro de página en lugar y añadir el parámetro a la URL en el update acción. También esperaría que los helpers de Rails aceptaran parámetros.

Cuestiones relacionadas