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