Fernando:

"Si entendí bien, en una aplicación Web simplota:
El equivalente a llamar a una función (miembro o no) es "redireccionar a un
cierto URL" Y los parametros a la función corresponden a la parte final del 
URL, luego del ?¿Es mas o menos así?"

Algo asi,  si ingreso un url como este:

http://localhost:3000/principal/mi_metodo?mi_variable=Hola

Rails hace lo siguiente: Busca un "controlador" (Una clase derivada de la clase 
ApplicationController, que a la vez se basa en la clase ActiveController::Base) 
con el nombre PrincipalController. Instancia un objeto de esa clase, y llama al 
metodo "mi_metodo". No utiliza el parametro "mi_variable" como parametro para 
el metodo, sino que hace disponible a la clase un hash global llamado params, 
de manera que podes hacer algo como esto:

Archivo /app/controller/application.rb
class ApplicationController < ActionController::Base
# Porque existe esta clase? para hacer disponible a tus controladores
# los comportamientos comunes a todos ellos.
end

Archivo /app/controller/principal.rb
class PrincipalController < ApplicationController
  def mi_metodo
    mi _variable= params[:mi_variable] # Levanto el parametro
    render :text => "El parametro mi_variable contenia #{mi_variable}"
  end
end

Ojo que todo esto pasa por default, pero se puede cambiar el comortamiento de 
los urls editando apropiadamente /config/routes.rb. P.D.: En rails hay muchos 
"por default", y esta es una de las cosas que hace que el desarrollo sea mas 
agil.

"Entonces, que el usuario pueda entrar cualquier URL en su browser ¿es como
si un usuario de una Desktop pudiera llamar a cualquier función, así de una
y con cualquier parámetro?"

No, tu usuario solo puede ingresar url que se dirijan a controladores que 
existan y metodos de los mismos que existan Y QUE SEAN PUBLICOS. Hay otras 
formas de evitar que un usuario acceda a un metodo de tu controlador, pero si 
pones "private" antes del metodo, basta. (Nota: a partir de ese private todos 
los metodos siguientes seran privados a menos que pongas "public" antes de 
definirlo)

class PrincipalController < ApplicationController
 private
  def mi_metodo # No accesible via url
     mi _variable= params[:mi_variable]
     render :text => "El parametro mi_variable contenia #{mi_variable}"
   end
 end

"se me voló el gorro como a Boss!!!!" 

Mmmm.... no se quien es Boss :)

Saludos!

Emmanuel

Fernando Cacciola <[EMAIL PROTECTED]> escribió: Hola Emmanuel,

> Que tal Fernando, en pocas palabras, una aplicacion rails sigue el
> patron MVC que se puede encontrar en muchas (bah.... se deberia
> encontrar en muchas!) aplicaciones desktop.
>
Joya, o sea que puedo seguir pensando del mismo modo :)

> Una diferencia con el desarrollo desktop es que, en gral --sin usar
> AJAX-- la comunicacion entre el usuario y la aplicacion web se
> interrumpe durante periodos indefinidos.... (hasta que el usuario
> accede a alguna opcion de la pagina o apreta "refresh" en su
> browser). Ademas, tenes que tener cuidado de manejar bien los casos
> en los que el usuario introduce el url manualmente,

OK.
Si entendí bien, en una aplicación Web simplota:
El equivalente a llamar a una función (miembro o no) es "redireccionar a un
cierto URL"
Y los parametros a la función corresponden a la parte final del URL, luego
del ?
¿Es mas o menos así?

Entonces, que el usuario pueda entrar cualquier URL en su browser ¿es como
si un usuario de una Desktop pudiera llamar a cualquier función, así de una
y con cualquier parámetro?

> lo que puede
> llegar a romper los esquemas si tu aplicacion no esta bien pensada. A
> este respecto una tecnica utilizada para minimizar estos problemas es
> la que se describe en:
>
> http://en.wikipedia.org/wiki/Representational_State_Transfer
>
OK

> ...rest ayuda porque el usuario no puede introducir url's que
> destruyan los datos, si o si tiene que utilizar "botones" de la
> pagina para modificar los datos relevantes. (claro... tambien puede
> intentar romper cosas con wget/curl... ¿porque lo haria? jejeje).
>
OK

> -----------
>
> Por otro lado, si vas a usar rails, te recomendaria que primero
> aprendas ruby. Conseguite este libro:
>
> Programming Ruby: The Pragmatic Programmers' Guide (2nd edition)
> http://www.amazon.com/Programming-Ruby-Pragmatic-Programmers-Second/dp/0974514055/ref=pd_bbs_sr_1/105-4587735-1556434?ie=UTF8&s=books&qid=1182884025&sr=8-1
>
OK.
Encontré una "primera version" de ese libro online (y free). Está bien esa,
o si o sí necesito la versión impresa?

> Algunos diran que no es necesario aprender ruby antes... es como
> decir que no es necesario aprender c++ para usar boost ;)
>
Claro.
Yo decidi embarcarme en RoR o Zope, en lugar de ASP.NET o JavaScript,  para
tener una excusa para aprender (de verdad) Ruby o Python, que son tan
geniales que hasta me da envidia no haberlos inventado yo :)

> Bueno ya lo leiste? Bien :) Ahora seguí con este:
>
> Agile Web Development with Rails (2nd edition)
> http://www.amazon.com/Agile-Development-Rails-Pragmatic-Programmers/dp/0977616630/ref=pd_bbs_sr_2_s9_rk/105-4587735-1556434?ie=UTF8&s=books&s9r=8afea4c10eefbc81010f8856a6640766&itemPosition=2&qid=1182884025&sr=8-2
>
OK

> Una de las ventajas de rails es que viene con un script que te genera
> un esqueleto de manera que puedas empezar a trabajar con una
> aplicacion bien formada. Una consecuencia de esto es que todas las
> aplicaciones rails "se parecen". Otra ventaja esta en el mapeador de
> base de datos a objetos, alias ORM: el mismo esta basado en esta
> pattern:
>
> http://en.wikipedia.org/wiki/Active_Record
>
Brillante.
SQL es una genialidad como engine de bajo nivel, pero la verdad es que si
tuviera que pensar toda la aplicación en terminos de comandos SQL me
volvería loco. Buenos, más loco  :)

> Los componentes basicos de una aplicacion rails son:
>
> ActionRecord:    Model: modelar los datos / salvarlos a una base de
> datos
> ActionView:        View:  generar la salida que "dibuja" el browser
> ActionController: Controller interaccion model-view
>
OK

> Bueno me iba  a sebar describiendo rails... pero mejor mira esto:
>
> http://www.onlamp.com/pub/a/onlamp/2005/01/20/rails.html
>
Impresionante... se me voló el gorro como a Boss!!!!

Muchas gracias

En cualquier momento me ven preguntando cositas :)

Fernando Cacciola
SciSoft
http://fcacciola.50webs.com 


_______________________________________________
ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar


       
---------------------------------

Todo sobre la Copa América.
Mantenete actualizado con las últimas noticias sobreesta competencia en Yahoo! 
Deportes (http://ar.sports.yahoo.com/futbol/copaamerica/index.html).
¡Enterate primero!
_______________________________________________
ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a