Work para explicar la creación de una App Rails:
* Creando la aplicación Rails
* Utilizando el Scaffold
* Migrando la base de datos
* Agregando validaciones
* Agregando relaciones entre los modelos
* Utilizando Nested Routes
* Utilizando View Helpers
* Agregando AJAX
GUIA DE LABORATORIO DEL USO DE LOS FRAMEWORS PHONEGAP Y JQUERY MOBILE EN APL...Ivan Petrlik
GUIA DE LABORATORIO QUE ME PERMITE EL USO DE LOS FRAMEWORS PHONEGAP Y JQUERY MOBILE EN APLICACIONES MOVILES ANDROID
ELABORACION : ING.IVAN PETRLIK AZABACHE
GUIA DE LABORATORIO PHONE GAP JQUERY MOBILE CARGADO DE_DATOS_DE_REGISTROS...Ivan Petrlik
GUIA DE LABORATORIO PHONE GAP JQUERY MOBILE CARGADO DE_DATOS_DE_REGISTROS_REMOTAMENTE_A_TRAVES_DE_UNA_CONEXION REMOTA CON PHP Y MYSQL ANDROID ING IVAN PETRLIK AZABACHE
Tutorial de Aplicaciones para Windows Phone 7.1 ControlesCarola Velazquez
En este tutorial vemos una serie de controles disponibles para desarrollar nuestras aplicaciones para Windows Phone, es viejito, pero espero que les sirva.
GUIA DE LABORATORIO DEL USO DE LOS FRAMEWORS PHONEGAP Y JQUERY MOBILE EN APL...Ivan Petrlik
GUIA DE LABORATORIO QUE ME PERMITE EL USO DE LOS FRAMEWORS PHONEGAP Y JQUERY MOBILE EN APLICACIONES MOVILES ANDROID
ELABORACION : ING.IVAN PETRLIK AZABACHE
GUIA DE LABORATORIO PHONE GAP JQUERY MOBILE CARGADO DE_DATOS_DE_REGISTROS...Ivan Petrlik
GUIA DE LABORATORIO PHONE GAP JQUERY MOBILE CARGADO DE_DATOS_DE_REGISTROS_REMOTAMENTE_A_TRAVES_DE_UNA_CONEXION REMOTA CON PHP Y MYSQL ANDROID ING IVAN PETRLIK AZABACHE
Tutorial de Aplicaciones para Windows Phone 7.1 ControlesCarola Velazquez
En este tutorial vemos una serie de controles disponibles para desarrollar nuestras aplicaciones para Windows Phone, es viejito, pero espero que les sirva.
En este tutorial se muestra como comenzar una App para Windows Phone muy básica, y como navegar entre páginas. Pronto la actualizaré ya que el link de descarga es algo viejo.
ya subi el codigo para la creación de extensiones nativas, solo que el siguiente commit ya le pondre comentarios
https://github.com/aovazquez/SerialNumber_iOS-ANE-.git
How To Improve Lead Generation With Prospecting Brian Carroll
In our time-crunched economy, teleprospectors and inside sales are the driving forces behind B2B sales. As a new year kicks off, teleprospectors and inside sales reps are in the hot-seat with expectations to generate the real revenue that will lead their companies out of this economy. How ready are they to take over the controls? Will their old habits keep them from succeeding? Where do they need to pick up speed?
During this webinar, Brian Carroll CEO of InTouch invites Josiane Feigon, founder and CEO of TeleSmart Communications to show you fresh and new ideas that will help catapult marketing and sales efforts in the new year.
In this Webinar, you'll learn tips on:
* Cold Calling
* Email and Voice Mail Trends
* Getting out of the No-Po Zone
* Finding the Power Buyers
* Winning Qualification Criteria
* And much more...
En este tutorial se muestra como comenzar una App para Windows Phone muy básica, y como navegar entre páginas. Pronto la actualizaré ya que el link de descarga es algo viejo.
ya subi el codigo para la creación de extensiones nativas, solo que el siguiente commit ya le pondre comentarios
https://github.com/aovazquez/SerialNumber_iOS-ANE-.git
How To Improve Lead Generation With Prospecting Brian Carroll
In our time-crunched economy, teleprospectors and inside sales are the driving forces behind B2B sales. As a new year kicks off, teleprospectors and inside sales reps are in the hot-seat with expectations to generate the real revenue that will lead their companies out of this economy. How ready are they to take over the controls? Will their old habits keep them from succeeding? Where do they need to pick up speed?
During this webinar, Brian Carroll CEO of InTouch invites Josiane Feigon, founder and CEO of TeleSmart Communications to show you fresh and new ideas that will help catapult marketing and sales efforts in the new year.
In this Webinar, you'll learn tips on:
* Cold Calling
* Email and Voice Mail Trends
* Getting out of the No-Po Zone
* Finding the Power Buyers
* Winning Qualification Criteria
* And much more...
Софтуерни инструменти в Амазон, които използвамМихаил Великов
В моят онлайн базиран бизнес използвам няколко софтуерни инструмента. На уебинар, който правих преди време ме попитаха какви са те. Тази презентация минава през основните няколко.
Това са Google Sheets, MercheBee, JungleScout и AMZ Seller Browser.
I know perfectly that many people could think: Hey guy, this stuff is only a dream, good for some sci-fi movies.
This general opinion is normal because so far we have seen electronics always opaque but, before show these project, I wanted to be sure they were feasible.
Well, if you read the ebook " A foldable world" - http://www.biodomotica.com/foldable-nanotech.htm - you will find that all this is true.
Most important universities, companies and research centers around the world are working on nanotechnology and on projects that I like: transparent electronics.
You don't need a Ph.D. in Physics to understand articles inside the ebook. At the end of reading you will begin to ask for a new foldable & transparent laptop ;-)
These devices are not yet available but are NOT sci-fi.
Printed electronics and nanotechnology will rules and changes the world before than you think.
Forget what have seen so far about electronic gadgets: printed electronics is coming with new unbelievable features.
This products will be thin, light, without wires, flexible, water-proof, shock resistant, low energy, solar recharge and recyclable.
This technology will be out of laboratory and completely available by a few years, so it’s not too early to think how the nanotechnology will change our life and how interact with invisible electronics.
Transparent and foldable electronic is a part of the coming printed electronics and these forecasts are my personal point of view:
Electronics should be user-friendly and eco-friendly, cheap and standard.
Some products will have only 2 dimensions. If you want 3rd dimension is possible use packaging technology (boxes) or glued printed electronics sheets or print directly on surfaces of 3d objects.
Philosophy of product designer is going to be more near to fashion designers or graphic designers:
products thought as dress, using ribbons and sheets.
Transparent and thin means not only invisible electronics but you can also customize it with your creativity.
Help and tutorial “how use it” are visible on the products’ surface.
With “artificial muscles” inside is possible move, vibrate or open printed sheets.
Using surface’s treatment like gecko's paws is possible shape or attach devices everywhere.
Solar nanocells recharge devices by sun or infrared rays.
Without wires for electric energy is possible use it everywhere.
Neither fall or water can damage our precious electronic friend.
A complete manual of Perspective from 0 to 6 vanishing points, including the curvilinear perspective. Drawings are step by step, without long descriptions. There is also a 5 languages Dictionary and Terminology page. (Italiano, English, Español, Français, Deutsch). The book is 312 pages in 16 chapters.
drawing perspective, one point perspective, two point perspective, three-point perspective, perspective definition.
prospettiva accidentale, prospettiva centrale, prospettiva 1 punto di fuga, prospettiva 2 punti di fuga, prospettiva 3 punti di fuga, definizione prospettiva, manuale di prospettiva, disegno della prospettiva.
Para nosotros la más importante es para que puedas dedicar ese tiempo a cosas que realmente importan como tu familia, hobbies o simplemente a descansar. Pero son muchas las razones sobretodo por salud, higuiene y recursos porque no todos disponemos de un equipo de profesionales formados con las mejores técnicas de limpieza y con maquinaria especializada.
2-2-17: Today Data & Society is releasing a new report – The Legacy of inBloom – which takes up these questions. Coauthors Monica Bulger, Patrick McCormick, and Mikaela Pitcan engaged in a year-long series of interviews and research to map the story of inBloom and its closure, which ignited a public discussion of student data privacy and has become the legacy any future edtech project will have to contend with.
Normalmente como desarrolladores nos toparemos con la parte en donde debemos de mostrar información que provenga de algún servicio, es por eso que, en este artículo, aprenderemos cómo consumir un servicio RESTful en una aplicación .Net Standard de Xamarin.Forms.
Consumo de APIs usando el WSO2 API ManagerIsildurMaC
En esta presentación se muestra como desarrollar un ejemplo de consumo de APIs usando el WSO2 API Manager a partir de un conjunto de servicios desplegados en una aplicación JAX-RS y expuestos como APIs en el APIM para ser consumidos desde una webapp en JAVA
Esta es una guía basica para la creacion de un proyecto con el framework rails y el lenguaje de programación ruby y como interactuar con el ambiente de desarrollo
Cómo consumir un web service SOAP usando jsp sobre un servidor web GlasFish. El ejemplo es un servicio que genera la CURP (DNI) de una persona y un formulario web cliente que lo consume.
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkitpabloesp
Esta presentación hace un respaso completo sobre las técnicas necesarias para desarrollar aplicaciones con Microsoft Ajax 1.0 y el Ajax Control Toolkit. Repasamos conceptos generales sobre Ajax, para revisar, de forma practica, cómo integrar Ajax en aplicaciones ASP.NET 2.0, Servicios Web, etc... Usaremos los controles UpdatePanel, UpdateProgress, etc... así como los elementos del Control Toolkit
En esta oportunidad, Gustavo Andres Brey, Co-Founder de Ingenia y ArqConf realizará una introducción a la metodología de Lean Startup y las consideraciones Arquitecturales que debemos tener a la hora de llevarla adelante para la creación de Startups Tecnológicos. Aportará su experiencia en la utilización de la metodologías no solo en startups sino también en su experiencia como Gerente de Sistemas en corporaciones creando productos digitales en la industria de la salud.
Docker es una de las tecnologías que más revolucionó el manejo de ambientes y despliegue de aplicaciones a gran escala. Veremos por qué es tan importante conocer esta tecnología para desarrolladores y administradores de infraestructura y cómo facilita aplicar prácticas de devops.
Durante la charla introduciremos la tecnología, como así tambien los casos prácticos sobre clustering, repositorios privados de imágenes y arquitectura productivas.
Gustavo Brey
Gustavo Andres Brey es Ingeniero en Sistemas de Información con más de 15 años de experiencia en la Industria IT. Actualmente es el CIO del Instituto Nacional de Servicios Sociales para Jubilados y Pensionados (INSSJP/PAMI), donde está impulsando un cambio de paradigma innovador en IT para la gestión de la salud pública Argentina. Desde 2004 es fundador y profesor de la materia Arquitectura de Proyectos de IT en la UTN- FRBA. A su vez es Co-Fundador de CONF4IT, una organización sin fines de lucro, que desarrolla conferencias agnósticas para distintas comunidades IT como ARQCONF y KIDSCONF. Participó en importantes conferencias de Tecnologías de la Información, Salud , Innovación, Open Source, Big Data, Arquitectura de Software, Gobierno y Datos Abiertos, así como de Hackathones.
Andrés Calabrese
Ingeniero en Sistema de Información con más de 11 años de experiencia tanto en puestos de liderazgo técnico en grandes empresas, como así también como CTO en varios emprendiendo tecnologicos como socio. Andrés comenzó su carrera en IBM, liderando proyectos complejos en diferentes tecnologías, a su vez promovió encuentros de colaboración técnica. Como CTO definió, planificó e implementó prácticas de Devops que permitieron guiar tecnologicamente a la compañía en términos metodológicos, de desarrollo e infraestructura.
Presentación de Ruby, destacando las características más interesantes del lenguaje desde un punto de vista cualitativo. Poco código en la presentación ya que va a ser usado con live coding con el IRB.
3Redu: Responsabilidad, Resiliencia y Respetocdraco
¡Hola! Somos 3Redu, conformados por Juan Camilo y Cristian. Entendemos las dificultades que enfrentan muchos estudiantes al tratar de comprender conceptos matemáticos. Nuestro objetivo es brindar una solución inclusiva y accesible para todos.
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...espinozaernesto427
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta intensidad son un tipo de lámpara eléctrica de descarga de gas que produce luz por medio de un arco eléctrico entre electrodos de tungsteno alojados dentro de un tubo de alúmina o cuarzo moldeado translúcido o transparente.
lámparas más eficientes del mercado, debido a su menor consumo y por la cantidad de luz que emiten. Adquieren una vida útil de hasta 50.000 horas y no generan calor alguna. Si quieres cambiar la iluminación de tu hogar para hacerla mucho más eficiente, ¡esta es tu mejor opción!
Las nuevas lámparas de descarga de alta intensidad producen más luz visible por unidad de energía eléctrica consumida que las lámparas fluorescentes e incandescentes, ya que una mayor proporción de su radiación es luz visible, en contraste con la infrarroja. Sin embargo, la salida de lúmenes de la iluminación HID puede deteriorarse hasta en un 70% durante 10,000 horas de funcionamiento.
Muchos vehículos modernos usan bombillas HID para los principales sistemas de iluminación, aunque algunas aplicaciones ahora están pasando de bombillas HID a tecnología LED y láser.1 Modelos de lámparas van desde las típicas lámparas de 35 a 100 W de los autos, a las de más de 15 kW que se utilizan en los proyectores de cines IMAX.
Esta tecnología HID no es nueva y fue demostrada por primera vez por Francis Hauksbee en 1705. Lámpara de Nernst.
Lámpara incandescente.
Lámpara de descarga. Lámpara fluorescente. Lámpara fluorescente compacta. Lámpara de haluro metálico. Lámpara de vapor de sodio. Lámpara de vapor de mercurio. Lámpara de neón. Lámpara de deuterio. Lámpara xenón.
Lámpara LED.
Lámpara de plasma.
Flash (fotografía) Las lámparas de descarga de alta intensidad (HID) son un tipo de lámparas de descarga de gas muy utilizadas en la industria de la iluminación. Estas lámparas producen luz creando un arco eléctrico entre dos electrodos a través de un gas ionizado. Las lámparas HID son conocidas por su gran eficacia a la hora de convertir la electricidad en luz y por su larga vida útil.
A diferencia de las luces fluorescentes, que necesitan un recubrimiento de fósforo para emitir luz visible, las lámparas HID no necesitan ningún recubrimiento en el interior de sus tubos. El propio arco eléctrico emite luz visible. Sin embargo, algunas lámparas de halogenuros metálicos y muchas lámparas de vapor de mercurio tienen un recubrimiento de fósforo en el interior de la bombilla para mejorar el espectro luminoso y reproducción cromática. Las lámparas HID están disponibles en varias potencias, que van desde los 25 vatios de las lámparas de halogenuros metálicos autobalastradas y los 35 vatios de las lámparas de vapor de sodio de alta intensidad hasta los 1.000 vatios de las lámparas de vapor de mercurio y vapor de sodio de alta intensidad, e incluso hasta los 1.500 vatios de las lámparas de halogenuros metálicos.
Las lámparas HID requieren un equipo de control especial llamado balasto para funcionar
Es un diagrama para La asistencia técnica o apoyo técnico es brindada por las compañías para que sus clientes puedan hacer uso de sus productos o servicios de la manera en que fueron puestos a la venta.
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informáticavazquezgarciajesusma
En este proyecto de investigación nos adentraremos en el fascinante mundo de la intersección entre el arte y los medios de comunicación en el campo de la informática.
La rápida evolución de la tecnología ha llevado a una fusión cada vez más estrecha entre el arte y los medios digitales, generando nuevas formas de expresión y comunicación.
Continuando con el desarrollo de nuestro proyecto haremos uso del método inductivo porque organizamos nuestra investigación a la particular a lo general. El diseño metodológico del trabajo es no experimental y transversal ya que no existe manipulación deliberada de las variables ni de la situación, si no que se observa los fundamental y como se dan en su contestó natural para después analizarlos.
El diseño es transversal porque los datos se recolectan en un solo momento y su propósito es describir variables y analizar su interrelación, solo se desea saber la incidencia y el valor de uno o más variables, el diseño será descriptivo porque se requiere establecer relación entre dos o más de estás.
Mediante una encuesta recopilamos la información de este proyecto los alumnos tengan conocimiento de la evolución del arte y los medios de comunicación en la información y su importancia para la institución.
Actualmente, y debido al desarrollo tecnológico de campos como la informática y la electrónica, la mayoría de las bases de datos están en formato digital, siendo este un componente electrónico, por tanto se ha desarrollado y se ofrece un amplio rango de soluciones al problema del almacenamiento de datos.
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
Ruby on Rails Workshop
1. Ruby On Rails Workshop - 21/10/2009
Table of Contents
De que se trata la aplicación.......................................................................................................................1
Creando la aplicación Rails........................................................................................................................1
Ejecutando la aplicación............................................................................................................................4
Utilizando el Scaffold................................................................................................................................6
Migrando la base de datos..........................................................................................................................8
Agregando validaciones...........................................................................................................................10
Agregando relaciones entre los modelos..................................................................................................12
Utilizando Nested Routes.........................................................................................................................14
Jugando con la consola............................................................................................................................14
Utilizando View Helpers..........................................................................................................................15
Agregando AJAX.....................................................................................................................................16
Utilizando RJS templates.........................................................................................................................20
Creando un custom helper........................................................................................................................21
De que se trata la aplicación
Para el workshop se eligió crear una aplicación de bloging. Se eligió este tipo de aplicación por ser algo
sencillo, de solo un par de modelos y pocas vistas. Además, ultimamente, en la mayoria de los nuevos
frameworks web se utiliza un ejemplo similar para crear la primera aplicación de ejemplo, algo asi
como el nuevo “Hello world”. La idea es hacer algo sencillo donde se puedan aplicar varios de los
conceptos básicos de rails como es scaffold, generators, helpers, custom helpers, templates, ajax,
validations, relationships, etc.
Basicamente el usuario final va a poder crear posts, editarlos y borrarlos asi como también se podrán
agregar comentarios a los posts.
Creando la aplicación Rails
File/new Project
Elegir
Categories : Ruby
Projects: Ruby on Rails application
Presionar “Next”.
2. Elegir las siguientes opciones:
Project Name: blog
Ruby Platform: Ruby 1.8.6
Presionar Next
7. Utilizando el Scaffold
Nuevamente abrir la vista “Projects”, presionar botón derecho y elegir la opción “Generate” .
Cargar las siguientes opciones:
Generator: scaffold
Model Name: post
Attribute Pairs:
title:string body:text
Presionar “OK”
8. Observar la ventana de output de “Rails Generator”
También observar la migration creada, haciendo click directamente en el link que nos muestra la
ventana del output de “Rails Generator” o bien abrir el archivo desde la vista “Projects”.
9. Migrando la base de datos
En el punto anterior se creó una migration pero aún no se modificó nada en la base de datos. Asi que
para esto se debe migrar a la última versión. Esto se hace haciendo botón derecho sobre la aplicación
en la vista “Projects” y elegir “Migrate Database” y luego “To current version”.
11. Agregando validaciones
Para validar que los Post que se crean sean “validos” se deberia de validar que el usuario especifique un
“title” y un “body” para el post.
Para eso se abre el modelo “post” dentro de la vista “Projects”.
y dentro de la clase escribir el texto:
validates
y presionar la convinación de teclas “CTRL+SPACE” para activar el autocomplete:
12. Se puede observar no solo las opciones de validaciones sinó también la ayuda y documentación de la
API de rails.
Seleccionar “validates_prescense_of” y especificar los campos “body” y “title”:
validates_presence_of :title, :body
Ahora probar de crear un post sin escribir alguno de los atributos anteriormente mencionados. Y
verificar el siguiente error:
13. Agregando relaciones entre los modelos
Por ahora solo existe el modelo “post”. Pero se puede agregar a la aplicación de blog la posibilidad de
escribir comentarios para cada post.
Para eso se va a crear el modelo “comment”. Ir a la vista “Projects” botón derecho sobre la aplicación,
“Generate” y en “Generator” elegir “model”. Presionar “OK”.
14. Luego migrar la base para que cree la tabla “comments”, botón derecho sobre la aplicación, elegir
“Migrate Database” y luego “to current version”.
Los “post” van a estar relacionados con los comments en la relación 1 a N.
Es decir “un post tiene muchos comments”.
Es decir, en inglés, “post has many comments”.
Es decir en Rails, se especifica dentro del modelo “post” con un “has_many :comments”.
Abrir el modelo post y escribir:
has_many :comments
y en el modelo “comments” escribir:
belongs_to :post
15. Utilizando Nested Routes
Para poder referenciar a los comentarios en forma de Recursos pertenencientes a Posts deberiamos
hacerlo a travez de una URL como la siguiente:
http://localhost:3000/posts/1/comments
Y para referirnos a un comentario en particular deberiamos hacerlo a travez de una URL como la
siguietne:
http://localhost:3000/posts/1/comments/1
Para esto debemos modificar las rutas. Las rutas están definidas en el archivo route.rb ubicado en la
carpeta config. O dentro de la vista “Projects” ir al proyecto y en “Configuration” abrir el archivo
“routes.rb” y agregarle a la definición de la ruta de post, lo siguiente:
map.resources :posts, :has_many => :comments
Jugando con la consola
Para ver los modelos en rails y jugar un poco con los modelos recién creados se puede abrir la consola
de rails y manipular los modelos directamente en la consola.
Para esto presionamos botón derecho sobre el proyecto y elegir “Rails console”.
Ahora creamos un Post nuevo desde la consola con la siguiente instrucción:
post1 = Post.create(:title => "desde la consola", :body => "el body desde la consola :P")
este devolverá el post creado seteandole automaticamente el timestampo en los campos “created_at” y
“updated_at”.
16. E inmediatamente se puede ver el post en la aplicación en el navegador. Eso es porque el server está
levantado usando el entorno de “Development” al igual que la consola. Por eso es que utilizan la misma
base de datos.
Volviendo a la consola, teniamos asignado en la variable “post1” el post recientemente creado, ahora
vamos a agregarle un comentario (también desde la consola).
Creamos un nuevo comentario y lo asignamos a una variable:
c1 = Comment.new
luego le seteamos el “body” a ese comentario.
c1.body = "este es el primer comentario del post"
y luego agregamos ese comentario al post1:
post1.comments << c1
Podemos verificar que cuando creamos el comment con la llamada a “.new” el comentario aún no tenia
asignado ningún id en la tabla. Al agregarlo al post automaticamente se guarda en la tabla el comentario
al mismo tiempo que la variable post_id se asigna con el id del post1. Eso es gracias a las relations que
especificamos anteriormente.
Utilizando View Helpers
Para mostrar los comentarios vamos a mostrarlos dentro de la vista “show” perteneciente a posts.
17. Para eso abrimos la vista show dentro de “Projects/views/posts/show.html.erb”.
Y agregamos al final del codigo de la vista lo siguiente:
<% content_tag(:div, :id => :comments ) do %>
<% @post.comments.each do | comment | %>
<% content_tag(:p) do %>
<%= label_tag(:comment_body, comment.body) %>,
<%= content_tag(:i, comment.created_at) %>
<% end %>
<% end %>
<% end %>
Se puede observar que se utilizaron algunos view helpers como “content_tag” y “label_tag”.
Generando un html como el siguiente:
Agregando AJAX
Para agregar los comentarios vamos a hacerlo a travez de ajax. Para eso vamos a agregar el formulario
de comments solamente en la vista “show” perteneciente a “posts”.
Primero y principal necesitamos que el template tenga las librerias necesarias para poder utilizar AJAX
en rails (librerias de Prototype y de Scriptaculous). Entonces abrimos el layout de posts
(“Projects/views/layouts/posts.html.erb”) y agregamos la siguiente instrucción en el head:
<%= javascript_include_tag :defaults %>
18. Ahora, abrir la vista show dentro de “Projects/views/posts/show.html.erb”.
Y agregar el siguiente formulario remoto al final de la vista:
<% remote_form_for([@post, Comment.new]) do |f| %>
<%= content_tag(:strong, "Send your comment:") %>
<% content_tag(:p) do %>
<%= f.text_area :body %>
<% end %>
<%= submit_tag 'comment' %>
<% end %>
19. El formulario remoto está apuntando al controller “comments” que aún no hemos creado:
Asi que generamos el controller haciendo botón derecho sobre la aplicación “Generate”, elegimos en
“generator” elegimos “controller” y en “name” elegimos:
Comments
20. Y dentro del controller de Comments agregamos la acción “create”
def create
post = Post.find(params[:post_id])
@comment = Comment.new(params[:comment])
post.comments << @comment
end
Si probamos de escribir algún comentario podemos notar un par de cosas.
Al presionar sobre el botón comment no notamos ninguna diferencia, pero si abrimos el log del
servidor (es una de las ventanas de OUTPUT, con el titulo de “Webrick for blog”) podemos ver que el
comentario se creó pero luego el controller lanzó un error al intentar encontrar un template para
renderizar esa acción:
21. Utilizando RJS templates.
Para crear el template de la acción create, presionamos botón derecho sobre la carpeta “comments”
dentro de “views”, luego “new” y luego “Empty RJS Template”.
Luego en Filename escribir “create” y presionar sobre “Finish”.
22. y ponerle el siguiente script:
page.insert_html(:bottom, :comments, content_tag(:p) do
label_tag(:comment_body, @comment.body) + ', ' +
content_tag(:i, @comment.created_at)
end
)
page["comment_body"].value = ''
Creando un custom helper
Una de las prácticas de Ruby on Rails es la de DRY. En nuestro anterior ejemplo repetimos
exactamente el mismo codigo en 2 lugares diferentes. Y ya se vió en la parte teorica los beneficios de
tener todo DRY y no tener codigo duplicado.
23. Asi que para esto vamos a crear un Custom Helper que haga ese trabajo en 1 solo lado.
Para esto abrimos el helper “application_helper.rb” en la vista “Projects” dentro de la aplicación y
dentro de “Helpers” y agregamos el siguiente metodo.
module ApplicationHelper
def get_comment_html(comment)
content_tag(:p) do
label_tag(:comment_body, comment.body) + ', ' +
content_tag(:i, comment.created_at)
end
end
end
Y modificamos los templates “show.html.erb” y “create.rjs” para que queden asi respectivamente: