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] :
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.