Render y redirect uso correcto

Como usar render y redirect de forma correcta

Estoy interesado en el tema de los renders, la verdad he leido mucho
sobre el tema pero aun no logro saber la diferencia entre render y
redirect (Mi primer inconveniente).

Lo que me ha llevado a instruirme sobre el tema es que necesito obtener
el codigo HTML de una URL compuesta por un :controller => c un :action
=> a y unos :params => p, pero por mas que leo lo unico que encuentro es
“render_to_text”, funciona pero no logro usarlo con propiedad ya que
logro ejecutar la URL con el controllador c, con la action a pero me
genera error ya que no puedo enviarle los parametros.

Alguien sabe el funcionamiento correcto de render para poder invocar con
parametros??

Gracias de antemano por cualquier ayuda e info.

Asclepios From egypt wrote:

Estoy interesado en el tema de los renders, la verdad he leido mucho
sobre el tema pero aun no logro saber la diferencia entre render y
redirect (Mi primer inconveniente).

Utiliza render cuando hayas recopilado ciertos datos de tu modelo,
probablemente de una consulta definida por el usuario y quieras
renderizar otra acción para desplegar los resultados. Por ejemplo si
tienes una URL de búsqueda /books/search y aunque los resultados sean
renderizados por otra acción utiliza render.

redirect_to utiliza un poderoso mecanismo de re-dirección, puede
re-dirigir a una acción del mismo controlador ó bien de otro pasando
cómo parametro el nombre del mismo, también puede re-dirigir a una URL
del mismo servidor ó bien cualquier URL. A manera de ejemplo, en tu
aplicación realizas un submit a un form, entonces el submit llama a una
acción que actualiza el modelo, una vez completada dicha acción quieres
re-dirigir a una nueva acción que maneje la renderización, entonces
utiliza redirect_to para esto.

Muy básico, pero puede ayudar: render = renderizar (en sus diferentes
formas):

Renderizar una acción :

render :action => “long_goal”, :layout => “spectacular”

Renderizar un partial :

render :partial => “person”, :locals => { :name => “david” }

Renderizar una plantilla :

render :template => “weblog/show”

Renderizar a un archivo (fichero para los españoles :)) :

render :file => “c:/path/to/some/template.rhtml”

Renderizar texto :

render :text => “hello world!”

Renderizar JSON :

render :json => {:name => “David”}.to_json

Renderizar una plantilla en linea (inline) :

render :inline => “<%= 'hello, ’ * 3 + ‘again’ %>”

Renderizar inline JavaScriptGenerator :

render :update do |page|
page.replace_html ‘user_list’, :partial => ‘user’, :collection =>
@users
page.visual_effect :highlight, ‘user_list’
end

Renderizar nada :
Algunas veces es conveniente combinar llamadas Ajax para ejecutar sus
efectos del lado del cliente, y comunicar el estatus de comunicación :

Renderiza una respuesta vacía con código de status 200

render :nothing => true

Renderiza una respuesta vacía con código de status 401 (acceso

denegado)
render :nothing => true, :status => 401

redirect_to : Básicamente es utilizado para mover de una acción a otra

def create
@entry = Entry.new(params[:entry])
if @entry.save
# The entry was saved correctly, redirect to show
redirect_to :action => ‘show’, :id => @entry.id
else
# things didn’t go so well, do something else
end
end

Ejemplos :

redirect_to :action => “show”, :id => 5
redirect_to “http://www.rubyonrails.org
redirect_to “/images/screenshot.jpg”
redirect_to :back

Lo anterior lo encuentras en la documentación del API, en la clase
ActionController::Base [1] :

[1] ActionController::Base

Espero te sirva.

Jaime Mora R.

Ok, Jaime gracias, y referente a mi segunda inquietud de casualidad
sabes algo o me puedes indicar en donde buscar o sobre que api en
especifico leer?

Gracias una vez mas

Asclepios From egypt wrote:

sabes algo o me puedes indicar en donde buscar o sobre que api en
especifico leer?

El atributo request es utilizado para accesar las variables del entorno
HTTP a través de request.env, el cuál está disponible tanto en el
controlador cómo en la vista :

class PruebasController < ApplicationController

def server_ip
location = request.env[“REMOTE_ADDR”]
uri = request.env[“REQUEST_URI”]
render :text => “Server #{location}, URI #{uri}”
end

end

Te recomiendo que estudies este [1] tutorial, particularmente la sección
request y response.

[1] http://rails.raaum.org/actioncontroller.html

Espero te sirva.

Jaime Mora R.