<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Curso Dicampus 2008</title>
	<atom:link href="http://cursodicampus2008.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://cursodicampus2008.wordpress.com</link>
	<description>Apuntes de clase</description>
	<lastBuildDate>Wed, 18 Jun 2008 10:37:11 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='cursodicampus2008.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Curso Dicampus 2008</title>
		<link>http://cursodicampus2008.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://cursodicampus2008.wordpress.com/osd.xml" title="Curso Dicampus 2008" />
	<atom:link rel='hub' href='http://cursodicampus2008.wordpress.com/?pushpress=hub'/>
		<item>
		<title>REST in Rails: Ejemplo del Blog y los Post</title>
		<link>http://cursodicampus2008.wordpress.com/2008/06/13/rest-in-rails-ejemplo-del-blog-y-los-post/</link>
		<comments>http://cursodicampus2008.wordpress.com/2008/06/13/rest-in-rails-ejemplo-del-blog-y-los-post/#comments</comments>
		<pubDate>Fri, 13 Jun 2008 10:27:33 +0000</pubDate>
		<dc:creator>xurdeendicampus</dc:creator>
				<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[ror]]></category>

		<guid isPermaLink="false">http://cursodicampus2008.wordpress.com/?p=81</guid>
		<description><![CDATA[Como esto del REST se complico un poco voy a subir un mini HOWTO de lo que yo entendi que hay que hacer basandonos en el ejemplo de que un Blog tiene varios posts. - Empezamos tocando el config/routes.rb : &#8211; Comentamos map.resources :posts &#60;&#8211; Para que no se pueda acceder por las url &#8220;clasicas&#8221; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cursodicampus2008.wordpress.com&amp;blog=3515342&amp;post=81&amp;subd=cursodicampus2008&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Como esto del REST se complico un poco voy a subir un mini HOWTO de lo que yo entendi que hay que hacer basandonos en el ejemplo de que un Blog tiene varios posts.</p>
<p>- <strong>Empezamos tocando el config/routes.rb :</strong></p>
<p>&#8211; <strong>Comentamos</strong> <em>map.resources :posts</em> &lt;&#8211; Para que no se pueda acceder por las url &#8220;clasicas&#8221; de post<br />
&#8211; <strong>Editamos </strong> <em>map.resources :blogs, :has_many =&gt; :posts </em>&lt;&#8211; Para que se pueda acceder por las url tipo REST de post a traves de Blog</p>
<p>- <strong>Ahora vamos al controlador de posts :</strong></p>
<p>&#8211; En todos los metodos del controlador <strong>buscamos el blog</strong>: <em>@blog = Blog.find(params[:blog_id])</em> &lt;&#8211; Necesitamos el blog en todas las acciones de post puesto que luego lo vamos a usar en las vistas.<br />
&#8211; <strong>Editamos</strong> los redirect to @post por <em>redirect_to(blog_posts_path(@blog))</em> &lt;&#8211; no queremos redirigir a mostrar los posts, sino a los posts del blog</p>
<p><strong>- Cambiamos los formularios de edicion y creacion:</strong></p>
<p>&#8211; Pasaran a ser: <em>form_for ([@blog, @post]) do |f|</em></p>
<p><strong> &#8211; Por ultimo editamos las vistas para cambiar los links que hagan referencia a los posts:</strong></p>
<p>&#8211; Los <strong>links ATRAS(listar) </strong>son : <em>link_to &#8220;Atras&#8221;, blog_posts_path(@blog)</em><br />
&#8211; Los <strong>links a EDITA</strong>R son: <em>link_to &#8220;Editar&#8221;, [:edit, @blog,@post]</em><br />
&#8211; Los <strong>links a MOSTRAR </strong>son: <em>link_to &#8220;Mostrar&#8221;, [@blog,post]</em> &lt;&#8212; ojo, post sin @ cuando lo tenemos dentro de un bucle&#8230; (ej el index que genera el scaffold), en el edit del scaffold seria con @</p>
<p>&#8211; Los <strong>links a NUEVO</strong> son:<em> link_to &#8220;Nuevo&#8221;, new_blog_post_path(@blog)</em></p>
<p>&#8211; Los <strong>links a Borrar</strong> son: <em>link_to &#8216;Borrar&#8217;, [@blog,post], :confirm =&gt; &#8216;Are you sure?&#8217;, :method =&gt; :delete</em></p>
<p>Es una guia rapida y chapucera, pero para orientarnos un poco valdra no?</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cursodicampus2008.wordpress.com/81/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cursodicampus2008.wordpress.com/81/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cursodicampus2008.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cursodicampus2008.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cursodicampus2008.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cursodicampus2008.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cursodicampus2008.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cursodicampus2008.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cursodicampus2008.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cursodicampus2008.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cursodicampus2008.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cursodicampus2008.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cursodicampus2008.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cursodicampus2008.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cursodicampus2008.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cursodicampus2008.wordpress.com/81/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cursodicampus2008.wordpress.com&amp;blog=3515342&amp;post=81&amp;subd=cursodicampus2008&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cursodicampus2008.wordpress.com/2008/06/13/rest-in-rails-ejemplo-del-blog-y-los-post/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/82f1b883ec2ec0872aa4bad7918a1555?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Xurde</media:title>
		</media:content>
	</item>
		<item>
		<title>Comandos desde consola</title>
		<link>http://cursodicampus2008.wordpress.com/2008/06/04/comandos-desde-consola/</link>
		<comments>http://cursodicampus2008.wordpress.com/2008/06/04/comandos-desde-consola/#comments</comments>
		<pubDate>Wed, 04 Jun 2008 08:12:38 +0000</pubDate>
		<dc:creator>raulcaster</dc:creator>
				<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://cursodicampus2008.wordpress.com/?p=80</guid>
		<description><![CDATA[Existen unos comandos muy empleados, para la creación y gestión de proyectos Rails. Antes de ejecutarlos, debemos situar el prompt en el directorio del proyecto. Arrancar el servidor: NO se debe utilizar nunca el servidor de Aptana, sino que se debe arrancar desde la consola: ruby script/server -p nPuerto. La parte de especificación del puerto [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cursodicampus2008.wordpress.com&amp;blog=3515342&amp;post=80&amp;subd=cursodicampus2008&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Existen unos comandos muy empleados, para la creación y gestión de proyectos Rails. Antes de ejecutarlos, debemos situar el prompt en el directorio del proyecto.</p>
<ul>
<li>Arrancar el servidor: NO se debe utilizar nunca el servidor de Aptana, sino que se debe arrancar desde la consola: <strong>ruby script/server -p nPuerto</strong>. La parte de especificación del puerto es opcional. Si se omite, se tomará el puerto 3000.</li>
<li>Generar un controlador: <strong>ruby script/generate controller nombre_controlador accion1 accion2 &#8230; accionN</strong>. Las acciones son los métodos que contendrá el controlador, aunque se pueden omitir. En este caso, se creará un controlador vacío.</li>
<li>Generar un archivo de migración:<strong> ruby script/generate migration nombre</strong>. No hay que incluir el número de orden de la migración, pues el sistema se encarga de ello.</li>
<li>Ejecutar migración: <strong>rake db:migrate -VERSION=versión</strong>. Para ejecutar una migración concreta. Si no se especifica la versión, ejecutará la última migración.</li>
</ul>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cursodicampus2008.wordpress.com/80/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cursodicampus2008.wordpress.com/80/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cursodicampus2008.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cursodicampus2008.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cursodicampus2008.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cursodicampus2008.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cursodicampus2008.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cursodicampus2008.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cursodicampus2008.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cursodicampus2008.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cursodicampus2008.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cursodicampus2008.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cursodicampus2008.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cursodicampus2008.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cursodicampus2008.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cursodicampus2008.wordpress.com/80/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cursodicampus2008.wordpress.com&amp;blog=3515342&amp;post=80&amp;subd=cursodicampus2008&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cursodicampus2008.wordpress.com/2008/06/04/comandos-desde-consola/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ff5d99585e4b83209897c72f788f4d83?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">raulcaster</media:title>
		</media:content>
	</item>
		<item>
		<title>Estructura de un proyecto Rails</title>
		<link>http://cursodicampus2008.wordpress.com/2008/06/04/estructura-de-un-proyecto-rails/</link>
		<comments>http://cursodicampus2008.wordpress.com/2008/06/04/estructura-de-un-proyecto-rails/#comments</comments>
		<pubDate>Wed, 04 Jun 2008 08:01:32 +0000</pubDate>
		<dc:creator>raulcaster</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Estructura]]></category>
		<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://cursodicampus2008.wordpress.com/?p=73</guid>
		<description><![CDATA[La característica más destacable de un proyecto Rails es la división física de los archivos, para fortalecer la división de sus funciones siguiendo el patrón Modelo-Vista-Controlador. Veamos los directorios más empleados de los que componen esta estructura. app Esta carpeta contiene los archivos que forman el sitio, repartidos según sus características en los subdirectorios controllers, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cursodicampus2008.wordpress.com&amp;blog=3515342&amp;post=73&amp;subd=cursodicampus2008&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>La característica más destacable de un proyecto Rails es la división física de los archivos, para fortalecer la división de sus funciones siguiendo el patrón Modelo-Vista-Controlador. Veamos los directorios más empleados de los que componen esta estructura.</p>
<h3>app</h3>
<p>Esta carpeta contiene los archivos que forman el sitio, repartidos según sus características en los subdirectorios <em>controllers</em>, <em>helpers</em>, <em>models</em> y <em>views</em>.</p>
<ul>
<li><em>Models</em>: la función principal de los modelos es la obtención de datos, almacenados en una base de datos, un fichero, etc., y de controlar la integridad de estos datos.</li>
<li>Views: en una página web, las vistas son las distintas interfaces del usuario. A su vez, contiene una carpeta denominada <span style="color:#000000;"><em>Layout</em>. Aquí, están unos ficheros que incluyen, básicamente, el apartado head de un archivo html. Después, por medio de bloques Ruby, se añade el cuerpo de las vistas para conformar el fichero completo. </span></li>
<li>Controllers guarda los archivos correspondientes a los controladores del sistema. Su trabajo consiste en recibir eventos del usuario (envío de formulario, pulsación de un enlace), invocar al modelo para recuperar los datos que necesita, y trasladarlos a la vista, para que los muestre.</li>
</ul>
<p>Cuando se definen las acciones de un controlador, se debe crear una vista para cada una de estas acciones. Cuando se invocan estos métodos, tras su ejecución, se muestra automáticamente la vista correspondiente al método ejecutado. A su vez, si es necesario, se puede crear un modelo para el controlador.</p>
<h3>config</h3>
<p>En esta carpeta, se almacenan los archivos de configuración del proyecto. Los archivos que nosotros solemos modificar son <em>routes.rb</em> y <em>database.yml</em>. En el primero, es posible modificar el controlador y su acción que se ejecutarán al acceder al sitio. En el otro, podemos modificar el nombre de la base de datos asociada al proyecto.</p>
<h3>db</h3>
<p>Principalmente, esta carpeta incluye las migraciones, es decir, los archivos de creacion y edición de la base de datos relacionada con el proyecto.</p>
<h3>doc</h3>
<p>Aquí se almacena la documentación del proyecto.</p>
<h3>log</h3>
<p>Los archivos guardados en este directorio son registros de la ejecución del sitio.</p>
<h3>public</h3>
<p>Este directorio tiene las imágenes que se muestran en las distintas vistas del proyecto, así como las hojas de estilo empleadas.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cursodicampus2008.wordpress.com/73/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cursodicampus2008.wordpress.com/73/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cursodicampus2008.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cursodicampus2008.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cursodicampus2008.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cursodicampus2008.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cursodicampus2008.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cursodicampus2008.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cursodicampus2008.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cursodicampus2008.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cursodicampus2008.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cursodicampus2008.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cursodicampus2008.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cursodicampus2008.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cursodicampus2008.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cursodicampus2008.wordpress.com/73/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cursodicampus2008.wordpress.com&amp;blog=3515342&amp;post=73&amp;subd=cursodicampus2008&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cursodicampus2008.wordpress.com/2008/06/04/estructura-de-un-proyecto-rails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ff5d99585e4b83209897c72f788f4d83?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">raulcaster</media:title>
		</media:content>
	</item>
		<item>
		<title>Instalacion de Rails en Ubuntu</title>
		<link>http://cursodicampus2008.wordpress.com/2008/06/04/instalacion-de-rails-en-ubuntu/</link>
		<comments>http://cursodicampus2008.wordpress.com/2008/06/04/instalacion-de-rails-en-ubuntu/#comments</comments>
		<pubDate>Wed, 04 Jun 2008 07:46:30 +0000</pubDate>
		<dc:creator>xurdeendicampus</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[web 2.0]]></category>
		<category><![CDATA[instalacion]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[ror]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://cursodicampus2008.wordpress.com/?p=72</guid>
		<description><![CDATA[Como vamos a empezar con Rails sin tenerlo instalado? Pues eso, que vamos a empezar por el principio con una forma buena bonita y barata de instalar Ruby on Rails en Ubuntu 8.04. Vamos por pasos: Instalar Build-Essential : sudo apt-get install build-essential Instalamos los paquetes necesarios para que rails funcione: sudo apt-get install ruby [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cursodicampus2008.wordpress.com&amp;blog=3515342&amp;post=72&amp;subd=cursodicampus2008&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Como vamos a empezar con Rails sin tenerlo instalado?<a href="http://cursodicampus2008.files.wordpress.com/2008/06/instalacionrails.jpeg"><img class="alignright alignnone size-thumbnail wp-image-77" style="float:left;" src="http://cursodicampus2008.files.wordpress.com/2008/06/instalacionrails.jpeg?w=89&#038;h=96" alt="" width="89" height="96" /></a></p>
<p>Pues eso, que vamos a empezar por el principio con una forma buena bonita y barata de instalar <strong>Ruby on Rails en Ubuntu 8.04</strong>.</p>
<p>Vamos por pasos:</p>
<ol>
<li><strong>Instalar Build-Essential</strong> : <em>sudo apt-get install build-essential</em></li>
<li><strong>Instalamos los paquetes necesarios para que rails funcione:</strong> <em>sudo apt-get install ruby ri rdoc mysql-server libmysql-ruby ruby1.8-dev irb1.8 libdbd-mysql-perl libdbi-perl libmysql-ruby1.8 libmysqlclient15off libnet-daemon-perl libplrpc-perl libreadline-ruby1.8 libruby1.8 mysql-client-5.0 mysql-common mysql-server-5.0 rdoc1.8 ri1.8 ruby1.8 libopenssl-ruby1.8</em></li>
<li><strong>Descargamos, descomprimimos y configuramos Rails:</strong> <em>sudo wget http://rubyforge.org/frs/download.php/20989/rubygems-0.9.4.tgz<br />
tar xvzf rubygems-0.9.4.tgz<br />
cd rubygems-0.9.4<br />
sudo ruby setup.rb</em></li>
<li><strong>Instalamos Rails:</strong><em> sudo gem install rails &#8211;include-dependencies (con dos guiones &#8220;- -&#8221; include) </em><strong>IMPORTANTE: este paso puede dar un error del tipo could not find rails &gt;0. Simplemente volvemos a ejecutar la orden y ya deberia funcionar.</strong></li>
<li><strong>Y un par de herramientas para la gestion de las bases de datos MySQL:</strong> <em>sudo apt-get install mysql-query-browser<br />
sudo apt-get install mysql-admin</em></li>
<li>Por ultimo y opcionalmente abrimos Aptana, esperamos e instalamos las gemas(gems) que nos sugiera.</li>
</ol>
<p>Tras este articulo le devuelvo la conexion a nuestros estudios centrales, donde mis compañeros os enseñaran a trabajar con Rails.</p>
<p>P.D.: Inestimable la colaboracion de Victor para este post.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cursodicampus2008.wordpress.com/72/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cursodicampus2008.wordpress.com/72/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cursodicampus2008.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cursodicampus2008.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cursodicampus2008.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cursodicampus2008.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cursodicampus2008.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cursodicampus2008.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cursodicampus2008.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cursodicampus2008.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cursodicampus2008.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cursodicampus2008.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cursodicampus2008.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cursodicampus2008.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cursodicampus2008.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cursodicampus2008.wordpress.com/72/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cursodicampus2008.wordpress.com&amp;blog=3515342&amp;post=72&amp;subd=cursodicampus2008&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cursodicampus2008.wordpress.com/2008/06/04/instalacion-de-rails-en-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/82f1b883ec2ec0872aa4bad7918a1555?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Xurde</media:title>
		</media:content>

		<media:content url="http://cursodicampus2008.files.wordpress.com/2008/06/instalacionrails.jpeg?w=89" medium="image" />
	</item>
		<item>
		<title>Resumen de Comandos</title>
		<link>http://cursodicampus2008.wordpress.com/2008/06/04/resumen-de-comandos/</link>
		<comments>http://cursodicampus2008.wordpress.com/2008/06/04/resumen-de-comandos/#comments</comments>
		<pubDate>Wed, 04 Jun 2008 07:43:07 +0000</pubDate>
		<dc:creator>xurdedicampus</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://cursodicampus2008.wordpress.com/?p=74</guid>
		<description><![CDATA[HTML TAGS Redirige a una WEB link_to (TEXTO, opciones = {}, HASH_atributos_HTML_CSS = nil) :confirm =&#62; &#8220;TEXTO pregunta&#8221; :popup =&#62; true &#124;&#124; array of window options # link_to &#8220;View Image&#8221;, { :action =&#62; &#8220;view&#8221; }, :popup =&#62; ['new_window_name', 'height=300,width=600'] :method =&#62; symbol of HTTP verb Insertar IMAGENES image_tag(&#8220;icon.png&#8221;, :size =&#62; &#8220;16&#215;10&#8243;, :alt =&#62; &#8220;ALT&#8221;) Redirige [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cursodicampus2008.wordpress.com&amp;blog=3515342&amp;post=74&amp;subd=cursodicampus2008&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>HTML TAGS</strong></p>
<p><strong>Redirige a una WEB</strong><br />
link_to (TEXTO, opciones = {}, HASH_atributos_HTML_CSS = nil)<br />
:confirm =&gt; &#8220;TEXTO pregunta&#8221;<br />
:popup =&gt; true || array of window options<br />
# link_to &#8220;View Image&#8221;, { :action =&gt; &#8220;view&#8221; }, :popup =&gt; ['new_window_name', 'height=300,width=600']<br />
:method =&gt; symbol of HTTP verb</p>
<p><strong>Insertar IMAGENES</strong><br />
image_tag(&#8220;icon.png&#8221;, :size =&gt; &#8220;16&#215;10&#8243;, :alt =&gt; &#8220;ALT&#8221;)</p>
<p><strong>Redirige a una Accion</strong><br />
redirect_to(:controller =&gt; &#8216;controlador&#8217;, :action =&gt; &#8216;accion&#8217;)</p>
<p><span id="more-74"></span></p>
<p><strong>RENDER</strong></p>
<p>Genera codigo HTML a partir de Plantillas(layouts), vistas (views\*.html.erb), vistas parciales(views\_*.html.erb)</p>
<p>render :action=&gt;Accion, :layout =&gt; &#8220;layout&#8221;<br />
render :partial =&gt; &#8220;_vista&#8221;,:object =&gt; @new_person,:collection =&gt; @winners</p>
<p>Nota: Si pasamos una colection Acedemos a cada elementos por el nombre del PARTIAL &#8220;vista&#8221;</p>
<p><strong>Busquedas en la BBDD</strong></p>
<p><strong>ObjetoTabla.find_by_CAMPO(&#8220;TEXTO&#8221;)</strong><br />
#busca por campo</p>
<p><strong>ObjetoTabla.find(:all,:order =&gt; :Campo)</strong><br />
#busca TODOS y ordena por Campo</p>
<p><strong>ObjetoTabla.find(:all,:conditions =&gt; ARRAY)</strong><br />
#pasa Parametros en un ARRAY tipo ["campo = ?",campo]</p>
<p><strong>ObjetoTabla.find(ID)</strong><br />
#Busca por ID</p>
<p><strong>ObjetoTabla.find(ID,:params =&gt; HASH)</strong><br />
#pasa Parametros en un HASH</p>
<p><strong>Comandos para las Migraciones de la BBDD</strong></p>
<p><strong>create_table :productos do |t|</strong> # Crea la Tabla productos<strong><br />
<strong>t.string :nombre </strong></strong># Crea el campo nombre de tipo string<strong><strong><br />
</strong></strong></p>
<p><strong>drop_table :productos </strong># Borra la tabla productos</p>
<p><strong>add_column :productos, :precio, :decimal, :default=&gt; 0, :scale=&gt;2, :precision =&gt;8</strong><br />
#Añade un campo<strong></strong></p>
<p><strong>remove_column :productos, :precio</strong><br />
# Borra un campo<strong></strong></p>
<p><strong>Producto.create :nombre =&gt; &#8220;producto ejemplo&#8221;,:autor =&gt; &#8220;21234&#8243;</strong><br />
#crea un Producto<strong></strong></p>
<p><strong>Protucto.find_by_nombre(&#8220;producto ejemplo&#8221;).destroy</strong><br />
#elimina un producto</p>
<p><strong>Formateo De Datos</strong></p>
<p><strong>.strftime(&#8220;Creado el %d/%m/%Y a las %H:%M:%S&#8221;) </strong><br />
#formatea Fecha y hora</p>
<p><strong>number_to_currency(numero, :unit =&gt; &#8220;€;&#8221;, :separator =&gt; &#8220;,&#8221;, :delimiter =&gt; &#8220;&#8221;)</strong><br />
#Formatea Moneda</p>
<p><strong>Links API Ruby</strong></p>
<p><a href="http://www.ruby-doc.org/core/">Oficial http://www.ruby-doc.org/core/ </a><br />
<a href="http://www.ruby-doc.org/docs/ProgrammingRuby/html/builtins.html">Otra http://www.ruby-doc.org/docs/ProgrammingRuby/html/builtins.html</a></p>
<p><strong>Links API Rails</strong></p>
<p><a href="http://api.rubyonrails.org/">Oficial http://api.rubyonrails.org/</a><br />
<a href="http://caboo.se/doc/files/vendor/rails/railties/CHANGELOG.html">Otra http://caboo.se/doc/files/vendor/rails/railties/CHANGELOG.html</a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cursodicampus2008.wordpress.com/74/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cursodicampus2008.wordpress.com/74/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cursodicampus2008.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cursodicampus2008.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cursodicampus2008.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cursodicampus2008.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cursodicampus2008.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cursodicampus2008.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cursodicampus2008.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cursodicampus2008.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cursodicampus2008.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cursodicampus2008.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cursodicampus2008.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cursodicampus2008.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cursodicampus2008.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cursodicampus2008.wordpress.com/74/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cursodicampus2008.wordpress.com&amp;blog=3515342&amp;post=74&amp;subd=cursodicampus2008&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cursodicampus2008.wordpress.com/2008/06/04/resumen-de-comandos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a9c11ef270ab48a64512f045e2c133a3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">xurdedicampus</media:title>
		</media:content>
	</item>
		<item>
		<title>Patrón Modelo-Vista-Controlador</title>
		<link>http://cursodicampus2008.wordpress.com/2008/06/04/patron-modelo-vista-controlador/</link>
		<comments>http://cursodicampus2008.wordpress.com/2008/06/04/patron-modelo-vista-controlador/#comments</comments>
		<pubDate>Wed, 04 Jun 2008 07:37:59 +0000</pubDate>
		<dc:creator>rormiguel</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://cursodicampus2008.wordpress.com/?p=75</guid>
		<description><![CDATA[Descripción Para el diseño de aplicaciones con sofisticados interfaces se utiliza el patrón de diseño Modelo-Vista-Controlador. La lógica de un interfaz de usuario cambia con más frecuencia que los almacenes de datos y la lógica de negocio. Si realizamos un diseño ofuscado, es decir, un pastiche que mezcle los componentes de interfaz y de negocio, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cursodicampus2008.wordpress.com&amp;blog=3515342&amp;post=75&amp;subd=cursodicampus2008&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><span style="font-family:Arial,Helvetica,Times;color:#000080;font-size:x-small;"><span style="color:#6c3600;"></p>
<h4>Descripción</h4>
<p></span> </span></p>
<p><span style="font-family:Arial,Helvetica,Times;color:#000080;font-size:x-small;">Para el diseño de aplicaciones con sofisticados interfaces se utiliza el patrón de diseño   Modelo-Vista-Controlador. La lógica de un interfaz de usuario cambia con más frecuencia que los almacenes de   datos y la lógica de negocio. Si realizamos un diseño ofuscado, es decir, un pastiche que mezcle los componentes   de interfaz y de negocio, entonces la consecuencia será que, cuando necesitemos cambiar el interfaz, tendremos   que modificar trabajosamente los componentes de negocio. Mayor trabajo y más riesgo de error. </span></p>
<p><span style="font-family:Arial,Helvetica,Times;color:#000080;font-size:x-small;">Se trata de realizar un diseño que desacople la vista del modelo, con la finalidad de mejorar la reusabilidad.   De esta forma las modificaciones en las vistas impactan en menor medida en la lógica de negocio o de datos. </span></p>
<p><span style="font-family:Arial,Helvetica,Times;color:#000080;font-size:x-small;">Elementos del patrón: </span></p>
<ul><span style="font-family:Arial,Helvetica,Times;color:#000080;font-size:x-small;"></p>
<li>Modelo: datos y reglas de negocio</li>
<li>Vista: muestra la información del modelo al usuario</li>
<li>Controlador: gestiona las entradas del usuario</li>
<p></span></ul>
<p><span style="font-family:Arial,Helvetica,Times;color:#000080;font-size:x-small;"><img src="http://www.proactiva-calidad.com/java/patrones/imagenes/mvc.gif" alt="" width="584" height="175" /> </span></p>
<p><span style="font-family:Arial,Helvetica,Times;color:#000080;font-size:x-small;">Un modelo puede tener diversas vistas, cada una con su correspondiente controlador. Un ejemplo clásico es el   de la información de una base de datos, que se puede presentar de diversas formas: diagrama de tarta, de barras,   tabular, etc. Veamos cada componente: </span></p>
<ol><span style="font-family:Arial,Helvetica,Times;color:#000080;font-size:x-small;"></p>
<li>El <strong>modelo</strong> es el responsable de:
<ul>
<li>Acceder a la capa de almacenamiento de datos. Lo ideal es que el modelo sea independiente del sistema   de almacenamiento.</li>
<li>Define las reglas de negocio (la funcionalidad del sistema). Un ejemplo de regla  puede ser: &#8220;Si la   mercancía pedida no está en el almacén, consultar el tiempo de entrega estándar del proveedor&#8221;.</li>
<li>Lleva un registro de las vistas y controladores del sistema.</li>
<li>Si estamos ante un modelo activo, notificará a las vistas los cambios que en los datos pueda producir   un agente externo (por ejemplo, un fichero bath que actualiza los datos, un temporizador que desencadena una   inserción, etc).</li>
</ul>
</li>
<li>El <strong>controlador</strong> es responsable de:
<ul>
<li>Recibe los eventos de entrada (un clic, un cambio en un campo de texto, etc.).</li>
<li>Contiene reglas de gestión de eventos, del tipo &#8220;SI Evento Z, entonces Acción W&#8221;.  Estas acciones pueden   suponer peticiones al modelo o a las vistas. Una de estas peticiones a las vistas puede ser una llamada al   método &#8220;Actualizar()&#8221;. Una petición al modelo puede ser &#8220;Obtener_tiempo_de_entrega( nueva_orden_de_venta )&#8221;.</li>
</ul>
</li>
<li>Las <strong>vistas</strong> son responsables de:
<ul>
<li>Recibir datos del modelo y los muestra al usuario.</li>
<li>Tienen un registro de su controlador asociado (normalmente porque además lo instancia).</li>
<li>Pueden dar el servicio de &#8220;Actualización()&#8221;, para que sea invocado por el controlador o por el   modelo (cuando es un modelo activo que informa de los cambios en los datos producidos por otros agentes).</li>
</ul>
</li>
<p></span></ol>
<p><span style="font-family:Arial,Helvetica,Times;color:#000080;font-size:x-small;"> </span></p>
<p><span style="font-family:Arial,Helvetica,Times;color:#000080;font-size:x-small;">Un ejemplo de MVC con un modelo pasivo (aquel que no notifica cambios en los datos) es la navegación web,   que responde a las entradas del usuario, pero no detecta los cambios en datos del servidor. </span></p>
<p><span style="font-family:Arial,Helvetica,Times;color:#000080;font-size:x-small;">El diagrama de secuencia:    <img src="http://www.proactiva-calidad.com/java/patrones/imagenes/mvc_secuencia.gif" alt="" width="417" height="205" /> </span></p>
<p><span style="font-family:Arial,Helvetica,Times;color:#000080;font-size:x-small;">Pasos: </span></p>
<ol><span style="font-family:Arial,Helvetica,Times;color:#000080;font-size:x-small;"></p>
<li>El usuario introduce el evento.</li>
<li>El Controlador recibe el evento y lo traduce en una petición al Modelo (aunque también puede llamar   directamente a la vista).</li>
<li>El modelo (si es necesario) llama a la vista para su actualización.</li>
<li>Para cumplir con la actualización la Vista puede solicitar datos al Modelo.</li>
<li>El Controlador recibe el control.</li>
<p></span></ol>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cursodicampus2008.wordpress.com/75/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cursodicampus2008.wordpress.com/75/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cursodicampus2008.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cursodicampus2008.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cursodicampus2008.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cursodicampus2008.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cursodicampus2008.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cursodicampus2008.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cursodicampus2008.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cursodicampus2008.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cursodicampus2008.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cursodicampus2008.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cursodicampus2008.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cursodicampus2008.wordpress.com/75/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cursodicampus2008.wordpress.com/75/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cursodicampus2008.wordpress.com/75/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cursodicampus2008.wordpress.com&amp;blog=3515342&amp;post=75&amp;subd=cursodicampus2008&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cursodicampus2008.wordpress.com/2008/06/04/patron-modelo-vista-controlador/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c9b87041392d8a0628e00a0e8e5cffdc?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">rormiguel</media:title>
		</media:content>

		<media:content url="http://www.proactiva-calidad.com/java/patrones/imagenes/mvc.gif" medium="image" />

		<media:content url="http://www.proactiva-calidad.com/java/patrones/imagenes/mvc_secuencia.gif" medium="image" />
	</item>
		<item>
		<title>Bingo sobre Railes</title>
		<link>http://cursodicampus2008.wordpress.com/2008/05/22/bingo-sobre-railes/</link>
		<comments>http://cursodicampus2008.wordpress.com/2008/05/22/bingo-sobre-railes/#comments</comments>
		<pubDate>Thu, 22 May 2008 17:07:07 +0000</pubDate>
		<dc:creator>xurdedicampus</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[ralis]]></category>
		<category><![CDATA[sesiones]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://cursodicampus2008.wordpress.com/?p=71</guid>
		<description><![CDATA[ver tutorial anterior En este tutorial Desarrollaremos un bingo para un solo usuario utilizando sessiones para guardar el progreso de la partida Creamos la Aplicacion rails bingo Ahora metemos en en la carpeta \app\models las clase Bingo.rb y Carton.rb class Bingo attr_accessor :bombo attr_accessor :mesa def initialize @bombo=Array.new @mesa=Array.new (0&#8230;80).each {&#124;x&#124; @bombo[x]= true} end # [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cursodicampus2008.wordpress.com&amp;blog=3515342&amp;post=71&amp;subd=cursodicampus2008&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a title="http://xurdedicampus.wordpress.com/2008/05/15/pequeno-ejemplo-en-rails/" href="http://">ver tutorial anterior</a></p>
<p>En este tutorial Desarrollaremos un bingo para un solo usuario utilizando sessiones para guardar el progreso de la partida</p>
<p>Creamos la Aplicacion</p>
<p><strong>rails bingo</strong></p>
<p>Ahora metemos en en la carpeta \app\models las clase Bingo.rb y Carton.rb</p>
<p><span id="more-71"></span></p>
<p><strong>class Bingo</strong><br />
attr_accessor :bombo<br />
attr_accessor :mesa<br />
def initialize<br />
@bombo=Array.new<br />
@mesa=Array.new<br />
(0&#8230;80).each {|x| @bombo[x]= true}<br />
end<br />
# Devuelve un numero aleatorio y Apunta que salio<br />
def canta<br />
num= rand(80)+1<br />
until self.bombo[num]<br />
num= rand(80)<br />
end<br />
self.bombo[num] = false<br />
mesa &lt;&lt; num<br />
num<br />
end<br />
def bombo_vacio?<br />
res=false<br />
self.bombo.each {|x| res=true if x}<br />
res<br />
end<br />
def ver_bolas<br />
@mesa.sort<br />
end<br />
end<br />
<strong>class Carton</strong><br />
attr_accessor :carton<br />
attr_accessor :lineas_cantadas<br />
def initialize<br />
numeros=Array.new<br />
while numeros.size &lt; 15    #Genera 15  Numeros Unicos<br />
numeros&lt;&lt; rand(79)+1<br />
numeros.uniq!<br />
end<br />
numeros.sort!             # Los Ordena<br />
carton=Array.new<br />
(0&#8230;3).each do |y|        # Los deordena de Arriba a Abbajo y de Izquierda a Dedecha<br />
fila=Array.new<br />
(0&#8230;5).each  do |x|<br />
fila[x]= numeros[x*3+y]<br />
end<br />
carton[y]= fila<br />
end<br />
@carton=carton<br />
@lineas_cantadas= Array.new<br />
(0&#8230;3).each do|x|        # Define que no se han cantado Lineas<br />
@lineas_cantadas[x]=false<br />
end<br />
end<br />
def recorrer<br />
self.carton.each_index do |nlinea|<br />
self.carton[nlinea].each_index do |num|<br />
yield(nlinea,num)<br />
end<br />
end<br />
end</p>
<p>def tachar_numero(num)<br />
res=false<br />
self.recorrer do |x,y|<br />
if self.carton[x][y]==num<br />
self.carton[x][y]*=-1<br />
res=true<br />
end<br />
end<br />
res<br />
end<br />
# Devuelve si se canta linea y si se canta  apunta que se canto<br />
def es_linea?<br />
res= false<br />
(0&#8230;3).each do |x|<br />
linea= true<br />
(0&#8230;5).each do |y|<br />
if self.carton[x][y] &gt;0<br />
linea=false<br />
end<br />
end<br />
if linea and !self.lineas_cantadas[x]<br />
res=true<br />
self.lineas_cantadas[x]=true<br />
end<br />
end<br />
res<br />
end<br />
def es_bingo?<br />
res=true<br />
self.recorrer { |x,y| res=false if self.carton[x][y] &gt; 0}<br />
res<br />
end<br />
end</p>
<p>creamos el Controlador</p>
<p><strong>ruby script\generate controller bingo</strong></p>
<p>Y lo Editamos</p>
<p>class BingoController &lt; ApplicationController<br />
#Pagina principal Recoge los valores de la sesion y segun Estado este<br />
#Parado =&gt; Partida sin empezar<br />
#Funcionando =&gt; Canta una bola y muestra el resultado<br />
#hasta_en_fin =&gt; Juega Hasta el final y guarda lo que pasa en @mensaje<br />
def index<br />
@partida=busca_partida<br />
@cartones=busca_cartones<br />
@mensaje= Array.new<br />
@estado=busca_estado<br />
bolas_sacadas=0<br />
salir=false<br />
if @estado != &#8220;parado&#8221;<br />
while (@estado == &#8220;hasta_el_fin&#8221;  or bolas_sacadas==0) and !salir<br />
@bola= @partida.canta<br />
@bolas=@partida.ver_bolas<br />
bolas_sacadas+=1<br />
@cartones.each do|c|<br />
n_carton= @cartones.index(c)<br />
if c.tachar_numero(@bola)<br />
@mensaje &lt;&lt; &#8220;Se Tacha el numero #@bola en el carton numero #{n_carton}&#8221;<br />
if c.es_linea?<br />
@mensaje &lt;&lt; &#8220;Cantas Linea en el carton numero #{n_carton}&#8221;<br />
if c.es_bingo?<br />
@mensaje &lt;&lt; &#8220;El Carton numero #{n_carton} ha Hecho Bingo&#8221;<br />
@mensaje &lt;&lt; &#8220;Ha necesitado #{bolas_sacadas} Bolas&#8221;<br />
salir=true<br />
session[:cartones]=nil<br />
session[:partida]=nil<br />
session[:estado]=nil<br />
break<br />
end<br />
end<br />
end<br />
end<br />
end<br />
end<br />
end<br />
# Añade un carton<br />
def compra_carton<br />
@cartones=busca_cartones<br />
@cartones &lt;&lt; Carton.new<br />
session[:cartones] =@cartones<br />
ir_a_index<br />
end<br />
# Solo regirige al index<br />
def ir_a_index(msg = nil)<br />
redirect_to :action =&gt; :index<br />
end<br />
# Devuelve la PARTIDA almacenados en la Session o una PARTIDA Nueva<br />
def busca_partida<br />
session[:partida] ||= Bingo.new<br />
end<br />
# Devuelve un Array con los cartones almacenados en la Session o una Array Nuevo<br />
def busca_cartones<br />
session[:cartones] ||= Array.new<br />
end<br />
# Devuelve el Estadoalmacenado en la Session o &#8220;parado&#8221; si no hay session<br />
def busca_estado<br />
session[:estado] ||= &#8220;parado&#8221;<br />
end<br />
# si esisten cartones Pones ESTADO = hasta_el_fin<br />
def hasta_el_fin<br />
@cartones=busca_cartones<br />
session[:estado] = &#8220;funcionando&#8221; if @cartones.size&gt;0<br />
session[:estado] = &#8220;hasta_el_fin&#8221;<br />
ir_a_index<br />
end<br />
# Si esisten cartones Pones ESTADO = &#8220;funcionando&#8221;<br />
def empezar<br />
@cartones=busca_cartones<br />
session[:estado] = &#8220;funcionando&#8221; if @cartones.size&gt;0<br />
ir_a_index<br />
end<br />
end</p>
<p>Ya esta el programa ahora necesitamos gestionar como mostrarlo. Para lo que usaremos plantillas (Layouts) y Vistas</p>
<p>Primero <strong>la Plantilla</strong>, creamos<strong> \app\views\layouts\bingo.html.erb</strong></p>
<p>&lt;!DOCTYPE html PUBLIC &#8220;-//W3C//DTD XHTML 1.0 Transitional//EN&#8221;<br />
&#8220;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&#8221;&gt;<br />
&lt;html xmlns=&#8221;http://www.w3.org/1999/xhtml&#8221; xml:lang=&#8221;en&#8221; lang=&#8221;en&#8221;&gt;<br />
&lt;head&gt;<br />
&lt;meta http-equiv=&#8221;content-type&#8221; content=&#8221;text/html;charset=UTF-8&#8243; /&gt;<br />
&lt;title&gt;Productos: &lt;%= controller.action_name %&gt;&lt;/title&gt;<br />
&lt;%= stylesheet_link_tag &#8216;bingo&#8217; %&gt;<br />
&lt;%= javascript_include_tag :defaults %&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;h1&gt;Bingo&lt;/h1&gt;<br />
&lt;div id=&#8221;all&#8221;&gt;<br />
&lt;div id=&#8221;cabecera&#8221;&gt;<br />
&lt;h2&gt;BINGO SOBRE RAILES&lt;/h2&gt;<br />
&lt;/div&gt;<br />
&lt;div id=&#8221;izquierda&#8221;&gt;<br />
&lt;h2&gt;Numeros Cantados&lt;/h2&gt;<br />
&lt;ul&gt;<br />
&lt;%= render(:partial =&gt; &#8220;bolas&#8221;, <img src='http://s1.wp.com/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> bject =&gt; @bolas) %&gt;<br />
&lt;/ul&gt;<br />
&lt;/div&gt;<br />
&lt;div id=&#8221;contenedor&#8221;&gt;<br />
&lt;div id=&#8221;centro&#8221;&gt;<br />
&lt;%= yield  %&gt;<br />
&lt;/div&gt;<br />
&lt;div id=&#8221;derecha&#8221;&gt;<br />
&lt;ul&gt;<br />
&lt;li&gt;&lt;%= button_to &#8220;Comprar Carton&#8221; , :action =&gt; :compra_carton %&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;%= button_to &#8220;Empezar&#8221;, :action =&gt; :empezar %&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;%= button_to &#8220;Ir al Final&#8221; , :action =&gt; :hasta_el_fin %&gt;&lt;/li&gt;<br />
&lt;/ul&gt;<br />
&lt;/div&gt;<br />
&lt;/div&gt;<br />
&lt;/div&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</p>
<p>Ahora las Vistas:</p>
<p><strong>\app\views\bingo\index.html.erb es la vista de la Accion index</strong></p>
<p>&lt;div class=&#8221;cartones&#8221;&gt;<br />
&lt;% if @cartones.size&gt;0 %&gt;<br />
&lt;% @cartones.each do |c| %&gt;<br />
&lt;div class=&#8221;carton&#8221;&gt;<br />
&lt;table&gt;<br />
&lt;% c.carton.each do |linea|%&gt;<br />
&lt;tr&gt;<br />
&lt;% linea.each    do |num|%&gt;<br />
&lt;td &lt;%= &#8216;class=&#8221;tachado&#8221;&#8216; if num &gt;0 %&gt;&gt;            &lt;%= &#8221; #{num.abs} &#8221; %&gt;&lt;/td&gt;<br />
&lt;% end %&gt;<br />
&lt;/tr&gt;<br />
&lt;% end%&gt;<br />
&lt;/table&gt;<br />
&lt;/div&gt;<br />
&lt;% end %&gt;<br />
&lt;% else %&gt;<br />
&lt;h2&gt;Bienvenido a Bingo sobre Railes &lt;/h2&gt;<br />
&lt;h3&gt;compra uno o mas cartones y dale a empezar&lt;/h3&gt;<br />
&lt;% end %&gt;<br />
&lt;/div&gt;<br />
&lt;% if @bola %&gt;<br />
&lt;div id=&#8221;pantalla&#8221;&gt;<br />
&lt;p&gt;&lt;%= @bola  %&gt;&lt;/p&gt;<br />
&lt;% if @mensaje %&gt;<br />
&lt;ul&gt;<br />
&lt;% @mensaje.each do |m|  %&gt;<br />
&lt;li&gt;&lt;%= h(m)  %&gt;&lt;/li&gt;<br />
&lt;% end %&gt;<br />
&lt;/ul&gt;<br />
&lt;% end %&gt;<br />
&lt;/div&gt;<br />
&lt;% end %&gt;</p>
<p><strong>\app\views\bingo\_bolas.html.erb es llamada desde la plantilla </strong>con &lt;%= render(:partial =&gt; &#8220;bolas&#8221;, <img src='http://s1.wp.com/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> bject =&gt; @bolas) %&gt;</p>
<p>&lt;ul&gt;<br />
&lt;% if @bolas %&gt;<br />
&lt;% @bolas.each do |bola_salida| %&gt;<br />
&lt;li&gt;&lt;%= bola_salida %&gt;&lt;/li&gt;<br />
&lt;% end %&gt;<br />
&lt;% end %&gt;<br />
&lt;/ul&gt;</p>
<p>Por ultimo podemos <strong>darle Estilos</strong> con <strong>\public\stylesheets\bingo.css</strong></p>
<p>BODY{ padding: 1em 1%; text-align:center;}<br />
H1{display:none;}<br />
UL{<br />
list-style:none;<br />
padding:0px;<br />
margin:0px;<br />
}</p>
<p>#all<br />
{<br />
width: 100%;<br />
}<br />
#cabecera<br />
{<br />
padding:0.4em 0%;<br />
margin: 0em 0% 0.2em;<br />
background:#CCCCCC;<br />
}<br />
#izquierda<br />
{<br />
float:left;<br />
width: 20%;<br />
background:#FFFFCC;<br />
}<br />
#contenedor<br />
{<br />
float:left;<br />
width:80%;<br />
}<br />
#centro<br />
{<br />
float:left;<br />
width:70%;<br />
}<br />
#derecha<br />
{<br />
float:right;<br />
width:28%;<br />
padding: 1em 0% 1em 0%;<br />
background:#FFFFCC;<br />
}<br />
#derecha INPUT<br />
{<br />
width:70%;<br />
padding: 0.3em 5%;<br />
margin: 0.3em auto;<br />
}<br />
.carton<br />
{<br />
width:23%;<br />
float:left;<br />
padding: 0.5em 0.5%;<br />
margin: 0.5em 0.5%;<br />
background:#FFCC99;<br />
}<br />
.carton TABLE<br />
{<br />
width:90%;<br />
margin:auto;<br />
}<br />
.carton TABLE TD{color:#009900 ;}<br />
.carton TABLE TD.tachado{color: #990000 ;}<br />
#pantalla{ clear:both;}<br />
#pantalla P<br />
{<br />
width: 4em;<br />
font-size:2em;<br />
padding: 0.5em;<br />
background:#99FFFF;<br />
margin:auto;<br />
}</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cursodicampus2008.wordpress.com/71/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cursodicampus2008.wordpress.com/71/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cursodicampus2008.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cursodicampus2008.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cursodicampus2008.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cursodicampus2008.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cursodicampus2008.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cursodicampus2008.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cursodicampus2008.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cursodicampus2008.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cursodicampus2008.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cursodicampus2008.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cursodicampus2008.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cursodicampus2008.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cursodicampus2008.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cursodicampus2008.wordpress.com/71/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cursodicampus2008.wordpress.com&amp;blog=3515342&amp;post=71&amp;subd=cursodicampus2008&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cursodicampus2008.wordpress.com/2008/05/22/bingo-sobre-railes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a9c11ef270ab48a64512f045e2c133a3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">xurdedicampus</media:title>
		</media:content>
	</item>
		<item>
		<title>Sintaxis básica de Ruby</title>
		<link>http://cursodicampus2008.wordpress.com/2008/05/21/sintaxis-basica-de-ruby/</link>
		<comments>http://cursodicampus2008.wordpress.com/2008/05/21/sintaxis-basica-de-ruby/#comments</comments>
		<pubDate>Wed, 21 May 2008 08:14:56 +0000</pubDate>
		<dc:creator>raulcaster</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Sintaxis]]></category>

		<guid isPermaLink="false">http://cursodicampus2008.wordpress.com/?p=70</guid>
		<description><![CDATA[Introducción. Ruby es un lenguaje de script interpretado, orientado a objetos, rápido y sencillo. No obstante, no es la panacea del programador. Las características básicas del lenguaje son las siguientes: Los comentarios comienzan por #. Las sentencias no terminan en ;. Se pueden evitar los paréntesis cuando no haya ambigüedad. Las variables locales comienzan por [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cursodicampus2008.wordpress.com&amp;blog=3515342&amp;post=70&amp;subd=cursodicampus2008&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h3>Introducción.</h3>
<p>Ruby es un lenguaje de script interpretado, orientado a objetos, rápido y sencillo. No obstante, no es la panacea del programador. Las características básicas del lenguaje son las siguientes:</p>
<ul>
<li>Los comentarios comienzan por #.</li>
<li>Las sentencias no terminan en ;.</li>
<li>Se pueden evitar los paréntesis cuando no haya ambigüedad.</li>
<li>Las variables locales comienzan por minúscula.</li>
<li>Las constantes empiezan por mayúscula.</li>
</ul>
<p>Los recursos que se emplearán serán el comando irb y la API de Ruby (<a href="http://www.ruby-doc.com/core/" target="_blank">http://www.ruby-doc.com/core/</a>).</p>
<h3>La clase Fixnum.</h3>
<p>Son los números enteros del rango 2^-30 a 2^30. Si se sobrepasa el límite del rango tras una operación, el tipo de la variable pasa automáticamente a Bignum. Como todo en Ruby es un objeto, un número constante tiene métodos a los que se puede invocar. Algunos métodos destacados son to_s (entero a string), to_f (entero a float), divmod (devuelve un array con el resultado y el cociente de una división) y remainder (retorna el resto de una división).</p>
<h3>La clase Float.</h3>
<p>Representa los números reales, en coma flotante con doble precisión. Algunos de los métodos que presenta son to_s (float a string), to_i, to_int, truncate (float a entero, truncando la parte decimal) y round (redondear a entero más cercano).</p>
<h3>Los boolenanos.</h3>
<p>En Ruby no existe un tipo de dato booleano, explícitamente. No obstante, reconoce los valores false y nil. Todo lo demás es falso (incluido 0, a difierencia de otros lenguajes de programación).</p>
<h3>La clase String.</h3>
<p>Cadenas de texto, encerradas entre comillas simples o dobles. La diferencia entre usar unas u otras estriba en que con las dobles, se parsea el contenido la cadena (por ejemplo, \n se traduce como un salto de línea), mientras que con las simples, la cadena no se traduce. Es posible acceder a los caracteres de la cadena a través de su índice. Si éstos son negativos, se empieza a contar desde el final de la cadena. Los métodos más destacados son los siguientes:</p>
<ul>
<li>capitalize: hace mayúscula la inicial de la cadena.</li>
<li>concat / &lt;&lt;: concatena una cadena a otra.</li>
<li>[]: devuelve el código ascii del carácter que ocupa la posición indicada.</li>
<li>delete: borrar de la cadena el carácter indicado.</li>
<li>eql? / == / equal?: los tres comprueban si dos cadenas son iguales. Además, equal? compara también que se trate del mismo objeto.</li>
<li>to_i / to_f / to_sym: transformar una cadena en entero, float o símbolo (un símbolo es una variable que apunta a una posición que contiene una cadena igual al nombre del símbolo. Su ventaja es que símbolos con el mismo nombre hacen referencia a la misma cadena).</li>
<li>upcase / downcase / swapcase: transformar una cadena a mayúsculas, minúsculas o intercambiar mayúsculas y minúsculas, y viceversa.</li>
<li>reverse: invertir el orden de los caracteres de una cadena.</li>
<li>next: retorna el siguiente caracter de la cadena, según el orden alfabético.</li>
<li>chop: elimina el último carácter de una cadena.</li>
<li>chomp: eliminar el salto de línea final de una cadena.</li>
<li>strip / lstrip / rstrip: eliminar los espacios en blanco de una cadena por ambos lados, sólo la izquierda o sólo la derecha.</li>
<li>split: generar un array a partir de un string, indicando el patrón separador de componentes.</li>
</ul>
<h3>Rangos.</h3>
<p>Para comprobar la inclusión de un valor en un rango, se emplea el operador ===. Los rangos pueden ser de dos tipos:</p>
<ul>
<li>(a..b): es equivalente a [a,b].</li>
<li>(a&#8230;b): es equivalente a [a,b).</li>
</ul>
<p>Algunos métodos son: begin, end (devuelven el extremo inferior y superior del rango), exclude_end (informa acerca de la exclusividad del extremo superior del rango), to_a (convertir un rango en un array).</p>
<h3>Expresiones regulares.</h3>
<p>Es un patrón que generalizar un conjunto de cadenas. Pertenecen a la clase Regexp. Para comprobar si una cadena cumple una expresión regular, se emplea el operador =~.</p>
<h3>Símbolos.</h3>
<p>Anteriormente, ya se ha explicado lo que es un símbolo. Para determinar si se debe emplear una cadena o un símbolo, hay que pensar sobre si lo importante es la identidad del objeto y el contenido del objeto. Algunos de los métodos que se pueden aplicar son to_i (símbolo a entero), to_f (símbolo a float) y to_s (símbolo a string).</p>
<h3>Arrays y hashes.</h3>
<p>Son colecciones de cualquier tipo de objetos (pueden ser distintos dentro de la misma colección). Los arrays son indexados mediante enteros, a diferencia de los hashes, que se indexan mediante cualquier objeto (que también pueden ser de distinto tipo). Por tanto, el array es más eficiente (está ordenado), mientras que el hash es más flexible. Los métodos más importantes son:</p>
<ul>
<li>join: genera un string a partir de un array. Debemos indicar el patrón que separará las componentes en el array.</li>
<li>sort: ordena el array.</li>
<li>rsort: invierte el orden de los elementos del array.</li>
<li>length: proporciona la longitud del array.</li>
<li>flatten: desanida el array (transforma un array bidimensional o unidimensional).</li>
<li>uniq: elimina elementos duplicados.</li>
<li>include?: comprobar si un elemento pertenece a un array.</li>
</ul>
<p>Los arrays se crean entre corchetes, mientras que los hashes, entre llaves, indicando clave y valor.</p>
<h3>Estructuras del lenguaje.</h3>
<p><strong>if / elsif / else</strong></p>
<p>if condicion1</p>
<p>sentecias</p>
<p>elsif condicion2</p>
<p>sentencias</p>
<p>else</p>
<p>sentencias</p>
<p>end</p>
<p><strong>unless</strong>: similar al if, se verifica cuando la condición no se cumple. No existe elsunless.</p>
<p>unless condicion</p>
<p>sentencias</p>
<p>end</p>
<p><strong>case</strong>: es el switch de otros lenguajes. En Ruby, el elemento estudiado puede ser de cualquier tipo. Permite estudiar la inclusión en un rango, la clase a que pertenece una variable o el cumplimiento de una expresión regular.</p>
<p>case a</p>
<p>when a = ..</p>
<p>sentencias</p>
<p>when a = ..</p>
<p>sentencias</p>
<p>else</p>
<p>sentencias</p>
<p>end</p>
<p><strong>while</strong>: bucle más sencillo</p>
<p>while condicion</p>
<p>sentencias</p>
<p>end</p>
<p><strong>until</strong>: funciona de forma similar al while, pero se ejecuta mientras no se verifica la condición:</p>
<p>until condicion</p>
<p>sentencias</p>
<p>end</p>
<p><strong>Interrupción de los bucles</strong>:</p>
<ul>
<li>break: sale del bucle.</li>
<li>next: pasa a la siguiente iteración del bucle.</li>
<li>redo: reinicia la iteración actual.</li>
<li>return: sale del bucle y del método que lo contiene.</li>
</ul>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cursodicampus2008.wordpress.com/70/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cursodicampus2008.wordpress.com/70/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cursodicampus2008.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cursodicampus2008.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cursodicampus2008.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cursodicampus2008.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cursodicampus2008.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cursodicampus2008.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cursodicampus2008.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cursodicampus2008.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cursodicampus2008.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cursodicampus2008.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cursodicampus2008.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cursodicampus2008.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cursodicampus2008.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cursodicampus2008.wordpress.com/70/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cursodicampus2008.wordpress.com&amp;blog=3515342&amp;post=70&amp;subd=cursodicampus2008&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cursodicampus2008.wordpress.com/2008/05/21/sintaxis-basica-de-ruby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ff5d99585e4b83209897c72f788f4d83?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">raulcaster</media:title>
		</media:content>
	</item>
		<item>
		<title>Un pequeño ejemplo en Rails</title>
		<link>http://cursodicampus2008.wordpress.com/2008/05/15/un-pequeno-ejemplo-en-rails/</link>
		<comments>http://cursodicampus2008.wordpress.com/2008/05/15/un-pequeno-ejemplo-en-rails/#comments</comments>
		<pubDate>Thu, 15 May 2008 19:27:15 +0000</pubDate>
		<dc:creator>xurdedicampus</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://cursodicampus2008.wordpress.com/?p=69</guid>
		<description><![CDATA[Como hacer el ejercicio 1 de ruby en Rails =&#62; Programa que coge 2 números y los Suma, Resta, Multiplica o Divide Desde el directorio de ruby Rails calculadora #Creamos la Aplicación cd calculadora ruby script/generate controller calculadora # Creamos el Controlador Editamos \app\controllers\calculadora_controller.rb class CalculadoraController &#60; ApplicationController def index end end En Esta ocasión [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cursodicampus2008.wordpress.com&amp;blog=3515342&amp;post=69&amp;subd=cursodicampus2008&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Como hacer el ejercicio 1 de ruby en Rails =&gt; Programa que coge 2 números y los Suma, Resta, Multiplica o Divide</p>
<p>Desde el directorio de ruby</p>
<p><strong>Rails calculadora </strong>#Creamos la Aplicación<br />
cd calculadora<br />
<strong> ruby script/generate controller calculadora </strong> # Creamos el Controlador</p>
<p><span id="more-69"></span></p>
<p><strong>Editamos \app\controllers\calculadora_controller.rb</strong></p>
<hr />class CalculadoraController &lt; ApplicationController<br />
def index<br />
end<br />
end</p>
<hr />En Esta ocasión vamos a dejar index vacio. Rails asume que queremos hacer Render usando el archivo \app\views\calculadora\index.html.erb (.rhtml para versiones de rails anteriores a la 2) y Usando la plantilla \app\views\layouts\calculadora.html.erb</p>
<p>empezamos por la Vista index.html.erb.</p>
<hr />
<p class="MsoNormal"><span>&lt;% form_for :calcu, :url =&gt; { :action =&gt; :resultado } do |formulario| %&gt;</span></p>
<p class="MsoNormal"><span><span> </span>&lt;label for=&#8221;numero1&#8243;&gt;Numero</span></p>
<p class="MsoNormal"><span><span> </span>&lt;%= text_field_tag ( &#8220;numero1&#8243;, &#8220;&#8221;, {&#8220;size&#8221; =&gt; 30}) %&gt;</span></p>
<p class="MsoNormal"><span><span> </span>&lt;/label&gt;</span></p>
<p class="MsoNormal"><span><span> </span>&lt;label for=&#8221;numero2&#8243;&gt;Numero</span></p>
<p class="MsoNormal"><span><span> </span>&lt;%= text_field_tag ( &#8220;numero2&#8243;, &#8220;&#8221;, {&#8220;size&#8221; =&gt; 30}) %&gt;</span></p>
<p class="MsoNormal"><span><span> </span>&lt;/label&gt;<span> </span></span></p>
<p class="MsoNormal"><span><span> </span>&lt;fieldset&gt;<span> </span>&lt;legend&gt;Operaciones&lt;/legend&gt;<span> </span></span></p>
<p class="MsoNormal"><span><span> </span><span> </span></span>&lt;label for=&#8221;operacion_suma&#8221;&gt;&lt;/label&gt;</p>
<p class="MsoNormal"><span> </span><span> </span>&lt;%= radio_button_tag &#8220;operacion&#8221;, &#8216;suma&#8217;, true %&gt;Suma<span> </span></p>
<p class="MsoNormal"><span> </span><span> </span>&lt;label for=&#8221;operacion_resta&#8221;&gt;&lt;/label&gt;</p>
<p class="MsoNormal"><span> </span><span> </span>&lt;%= radio_button_tag &#8220;operacion&#8221;, &#8216;resta&#8217; %&gt;Resta</p>
<p class="MsoNormal"><span> </span><span> </span>&lt;label for=&#8221;operacion_multiplica&#8221;&gt;&lt;/label&gt;</p>
<p class="MsoNormal"><span> </span><span> </span>&lt;%= radio_button_tag &#8220;operacion&#8221;, &#8216;multiplica&#8217; %&gt;Multiplicacion</p>
<p class="MsoNormal"><span> </span><span> </span><span>&lt;label for=&#8221;operacion_divide&#8221;&gt;&lt;/label&gt;</span></p>
<p class="MsoNormal"><span><span> </span><span> </span>&lt;%= radio_button_tag &#8220;operacion&#8221;, &#8216;divide&#8217; %&gt;Division</span></p>
<p class="MsoNormal"><span><span> </span>&lt;/fieldset&gt;</span></p>
<p class="MsoNormal"><span><span> </span>&lt;input type=&#8221;submit&#8221; value=&#8221;Calcular&#8221;/&gt;</span></p>
<p class="MsoNormal">&lt;% end %&gt;</p>
<hr />Para insertar código usamos:<br />
<strong> &lt;%= %&gt; </strong> # Ejecuta y muestra el resultado<br />
<strong> &lt;% %&gt; </strong> # Solo ejecuta<br />
<strong> &lt;% puts %&gt; </strong> # Ejecuta y muestra el resultado en la consola de WEBrick para depurar</p>
<p>La declaración del formulario es diferente de las declaraciones de los Inputs porque la Etiqueta start_form_tag  no funciona en rails 2 así que Las variables  :rails y |formulario | no se usan</p>
<p>Este formulario Llama a la<strong> Acción Resultado. Tenemos que crearla</strong> en el controlador calculadora_controller.rb</p>
<hr />def resultado</p>
<p>@num1= params[:numero1].to_f<br />
@num2= params[:numero2].to_f<br />
@operacion = params[:operacion]<br />
case @operacion<br />
when &#8220;suma&#8221;<br />
@resultado = @num1 + @num2<br />
@operacion=&#8221;+&#8221;<br />
when &#8220;resta&#8221;<br />
@resultado = @num1 &#8211; @num2<br />
@operacion=&#8221;-&#8221;<br />
when &#8220;multiplica&#8221;<br />
@resultado = @num1 * @num2<br />
@operacion=&#8221;*&#8221;<br />
when &#8220;divide&#8221;<br />
@resultado = @num1 / @num2<br />
@operacion=&#8221;/&#8221;<br />
end<br />
end</p>
<hr />Ahora <strong>necesitamos una Vista para la nueva Acción Resultado</strong> (resultado.html.erb). Por ejemplo:</p>
<hr />
<p class="MsoNormal">&lt;h1&gt;Resultado de la operacion&lt;/h1&gt;</p>
<p class="MsoNormal">&lt;br /&gt;</p>
<p class="MsoNormal">&lt;%= &#8220;#@num1 #@operacion #@num2 = #@resultado&#8221; %&gt;</p>
<p class="MsoNormal"><span>&lt;br /&gt;</span></p>
<p><span style="font-size:12pt;">&lt;%= link_to &#8220;Volver&#8221;, :action =&gt; &#8220;index&#8221; %&gt;</span></p>
<hr />Probamos la Web<br />
<strong> ruby script/server </strong> # Abrimos el servidor web<br />
y<br />
<strong> http://127.0.0.1:3000/calculadora</strong></p>
<p>Ahora se podría poner guapo <strong>creando la plantilla</strong> \app\views\layouts\calculadora.html.erb. como esta:</p>
<hr />
<p class="MsoNormal"><span>&lt;!DOCTYPE html PUBLIC &#8220;-//W3C//DTD XHTML 1.0 Transitional//EN&#8221;</span></p>
<p class="MsoNormal"><span><span> </span>&#8220;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&#8221;&gt;</span></p>
<p class="MsoNormal"><span> </span></p>
<p class="MsoNormal"><span>&lt;html xmlns=&#8221;http://www.w3.org/1999/xhtml&#8221; xml:lang=&#8221;en&#8221; lang=&#8221;en&#8221;&gt;</span></p>
<p class="MsoNormal"><span>&lt;head&gt;</span></p>
<p class="MsoNormal"><span><span> </span>&lt;meta http-equiv=&#8221;content-type&#8221; content=&#8221;text/html;charset=UTF-8&#8243; /&gt;</span></p>
<p class="MsoNormal"><span><span> </span>&lt;title&gt;Calculadora: &lt;%= controller.action_name %&gt;&lt;/title&gt;</span></p>
<p class="MsoNormal"><span><span> </span>&lt;%= stylesheet_link_tag &#8216;calculadora&#8217; %&gt;</span></p>
<p class="MsoNormal"><span>&lt;/head&gt;</span></p>
<p class="MsoNormal"><span>&lt;body&gt;</span></p>
<p class="MsoNormal"><span> </span></p>
<p class="MsoNormal"><span>&lt;p style=&#8221;color: green&#8221;&gt;&lt;%= flash[:notice] %&gt;&lt;/p&gt;</span></p>
<p class="MsoNormal">&lt;div id=&#8221;all&#8221;&gt;</p>
<p class="MsoNormal"><span> </span>&lt;div id=&#8221;cabecera&#8221;&gt;&lt;h1&gt;MiniCalculadora sobre Railes&lt;/h1&gt;&lt;/div&gt;</p>
<p class="MsoNormal"><span> </span>&lt;div id=&#8221;cuerpo&#8221;&gt;</p>
<p class="MsoNormal"><span> </span><span> </span><span> </span>&lt;%= yield<span> </span>%&gt;</p>
<p class="MsoNormal"><span> </span>&lt;/div&gt;</p>
<p class="MsoNormal">&lt;/div&gt;</p>
<p class="MsoNormal">&lt;/body&gt;</p>
<p class="MsoNormal">&lt;/html&gt;</p>
<hr /><strong>yield</strong><span><strong> </strong>Indica en donde se &#8220;Pegaran&#8221; las Vistas.<br />
</span></p>
<p>Con stylesheet_link_tag &#8216;calculadora&#8217; es un Link a una<strong> Hoja de estilo </strong>en \public\stylesheets llamada calculadora.css:</p>
<hr />BODY{	text-align: center;}<br />
A{	color: White;}<br />
#all{	margin: 10px auto;}<br />
#cabecera{<br />
width: 400px;<br />
background: Gray;<br />
padding: 5px 0px;<br />
color: White;<br />
border: 2px solid #cccccc;<br />
margin: 10px auto;<br />
}<br />
#cuerpo{<br />
width: 340px;<br />
margin: 5px auto;<br />
padding: 30px;<br />
background: Gray;<br />
border: 2px solid #cccccc;<br />
color: white;<br />
text-align: left;<br />
}<br />
#cuerpo LABEL{<br />
display: block;<br />
padding:6px;<br />
}<br />
#cuerpo FIELDSET{	margin: 10px 0px;}</p>
<hr />Espero os sea Útil. Si veis algo mal, por favor, Avisa</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cursodicampus2008.wordpress.com/69/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cursodicampus2008.wordpress.com/69/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cursodicampus2008.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cursodicampus2008.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cursodicampus2008.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cursodicampus2008.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cursodicampus2008.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cursodicampus2008.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cursodicampus2008.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cursodicampus2008.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cursodicampus2008.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cursodicampus2008.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cursodicampus2008.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cursodicampus2008.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cursodicampus2008.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cursodicampus2008.wordpress.com/69/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cursodicampus2008.wordpress.com&amp;blog=3515342&amp;post=69&amp;subd=cursodicampus2008&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cursodicampus2008.wordpress.com/2008/05/15/un-pequeno-ejemplo-en-rails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a9c11ef270ab48a64512f045e2c133a3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">xurdedicampus</media:title>
		</media:content>
	</item>
		<item>
		<title>La navegación</title>
		<link>http://cursodicampus2008.wordpress.com/2008/05/14/la-navegacion/</link>
		<comments>http://cursodicampus2008.wordpress.com/2008/05/14/la-navegacion/#comments</comments>
		<pubDate>Wed, 14 May 2008 10:09:20 +0000</pubDate>
		<dc:creator>xuan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://cursodicampus2008.wordpress.com/?p=68</guid>
		<description><![CDATA[La navegación en la web tiene como objetivo ayudar al usuario a encontrar lo que busca. Informa de: La situación del usuario: dónde está. Qué contiene la página que está visitando. A dónde se puede ir desde la página en la que está situado. Cómo usar la web que visita. Convenciones sobre la navegación. Describen [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cursodicampus2008.wordpress.com&amp;blog=3515342&amp;post=68&amp;subd=cursodicampus2008&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>
	La navegación en la web tiene como objetivo ayudar al usuario a encontrar lo que busca. Informa de:
</p>
<ul>
<li>La <strong>situación del usuario</strong>: dónde está.</li>
<li><strong>Qué contiene</strong> la página que está visitando.</li>
<li><strong>A dónde</strong> se puede ir desde la página en la que está situado.</li>
<li><strong>Cómo usar</strong> la web que visita.</li>
</ul>
<h3>Convenciones sobre la navegación.</h3>
<p>
	Describen una serie de <strong>elementos que deben estar presentes en una página</strong> para asegurarse de que su uso resulta<br />
	intuitivo al usuario.
</p>
<h4>Navegación persistente</h4>
<p>
	Se refiere a los <strong>elementos comunes a todas las páginas</strong> de nuestra web que permiten navegar de unas a otras o realizar<br />
	acciones que no son dependientes del contenido específico de una página en particular.
</p>
<ul>
<li><strong>Identificador del sitio</strong>: generalmente en la parte superior izquierda</li>
<li><strong>Secciones</strong>: deben ser fácilmente <strong>localizables</strong></li>
<li><strong>Enlace a la página principal</strong>: debe estar <strong>siempre presente</strong> y ser fácilmente <strong>localizable</strong></li>
<li><strong>Utilidades</strong>: ofrecen la posibilidad de realizar acciones que no pertenecen a la jerarquía de información de la página.</li>
<li>Búsqueda:
<ul>
<li>Debe ser fácilmente <strong>identificable</strong>.</li>
<li><strong>Simple</strong>: evitar instrucciones y opciones.</li>
</ul>
</li>
<li><strong>Nombre de la página</strong>: <strong>único</strong> para cada página, situado de forma que sea fácilmente localizable.</li>
<li><strong>Migas de pan</strong>: situadas de forma localizable, pero discreta. Describen la situación del usuario en la jerarquía de la web.</li>
<li>Navegación local: depende del contexto de la página. Enlaza a contenidos de interés o relacionados con los de la página actual.</li>
</ul>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cursodicampus2008.wordpress.com/68/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cursodicampus2008.wordpress.com/68/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cursodicampus2008.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cursodicampus2008.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cursodicampus2008.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cursodicampus2008.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cursodicampus2008.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cursodicampus2008.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cursodicampus2008.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cursodicampus2008.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cursodicampus2008.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cursodicampus2008.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cursodicampus2008.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cursodicampus2008.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cursodicampus2008.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cursodicampus2008.wordpress.com/68/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cursodicampus2008.wordpress.com&amp;blog=3515342&amp;post=68&amp;subd=cursodicampus2008&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cursodicampus2008.wordpress.com/2008/05/14/la-navegacion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f5a08ca8a3cf48e236393c0a70d5d29c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">xuan</media:title>
		</media:content>
	</item>
	</channel>
</rss>
