Diferencias entre redirect_to y render


#1

Saludos a todos:

Soy un recién llegado Rails, y lo primero que he hecho ha sido comprarme
el libro de los programadores pragmáticos (el “Agile Web D.
with Rails, 2ª ed”), y mirando uno de los ejemplos veo el siguiente
trozo de código:

def save_after_edit
order = Order.find(params[:id])
if order.update_attributes(params[:order])
redirect_to :action => :index
else
render :action => :edit
end
end

La pregunta es: ¿por qué una vez usa redirect_to y luego usa render?
¿Qué diferencia hay entre las dos? Porque yo entiendo que las dos
instrucciones hacen lo mismo: mostrar la vista asociada a la acción que
se manda como parámetro. ¿Me equivoco? Probablemente :slight_smile:

Gracias de antemano.


#2

On 08/01/07, Ricardo Pérez removed_email_address@domain.invalid wrote:

Saludos a todos:

La pregunta es: ¿por qué una vez usa redirect_to y luego usa render?
¿Qué diferencia hay entre las dos? Porque yo entiendo que las dos
instrucciones hacen lo mismo: mostrar la vista asociada a la acción que
se manda como parámetro. ¿Me equivoco? Probablemente :slight_smile:

Gracias de antemano.

Bueno, está bastante explícito en el nombre. ‘Render’ “dibuja” la
correspondiente plantilla, mientras que “redirect_to” redirige
(redirección HTTP) a otro método. En concreto hace una
redirecciónpermanente (cod. 302)

En la documentación de Rails (http://api.rubyonrails.org/) tienes
bastante bien explicados cada método, para dudas de este tipo.


Manuel
http://linkja.com * un agregador de tendencias
http://simplelogica.net
http://simplelogica.net/logicola


#3

imagina que tienes un formulario y quieres que cuando den a enviar los
datos, en caso de que se haya producido un error, se muestre el
formulario con los datos que había introducido junto a un mensaje
indicando cual era el problema. en este caso utilizarías el método
render, ya que así aprovecharías los datos enviados y pintarías la vista
en una sola petición.
por otro lado, a lo mejor quieres que cuando se hayan grabado
correctamente los datos del formulario, redirigir al usuario a otra
pantalla, así que utilizarías el método redirect_to donde se cargarán
los datos y vistas necesarios.

saludos

On Mon, 2007-01-08 at 21:37 +0100, Ricardo Pérez wrote:

Lo que me pregunto más bien es qué lleva al programador a usar, por
ejemplo, render en lugar de redirect_to (o viceversa…)


/**


#4

On 08/01/07, Borja Martín removed_email_address@domain.invalid wrote:

imagina que tienes un formulario y quieres que cuando den a enviar los
datos, en caso de que se haya producido un error, se muestre el

Como ha dicho Borja. Depende de si la utilidad de esa acción ya ha
concluido para ese ciclo de interacción (y rediriges) o bien, con los
datos disponibles, necesitas presentar determinada vista (y rendeas)


Manuel
http://linkja.com * un agregador de tendencias
http://simplelogica.net
http://simplelogica.net/logicola


#5

Ya lo veo algo más claro. Aunque supongo que será cuestión de probar en
la práctica y ver la diferencia real. Muchas gracias a todos :slight_smile:


#6

Manuel González Noriega wrote:

On 08/01/07, Ricardo P�rez removed_email_address@domain.invalid wrote:

Saludos a todos:

La pregunta es: �por qu� una vez usa redirect_to y luego usa render?
�Qu� diferencia hay entre las dos? Porque yo entiendo que las dos
instrucciones hacen lo mismo: mostrar la vista asociada a la acci�n que
se manda como par�metro. �Me equivoco? Probablemente :slight_smile:

Gracias de antemano.

Bueno, est� bastante expl�cito en el nombre. ‘Render’ “dibuja” la
correspondiente plantilla, mientras que “redirect_to” redirige
(redirecci�n HTTP) a otro m�todo. En concreto hace una
redirecci�npermanente (cod. 302)

En la documentaci�n de Rails (http://api.rubyonrails.org/) tienes
bastante bien explicados cada m�todo, para dudas de este tipo.

Muchas gracias, Manuel.

Lo que me pregunto más bien es qué lleva al programador a usar, por
ejemplo, render en lugar de redirect_to (o viceversa…)