Sei sulla pagina 1di 70

UNIVERSIDAD NACIONAL AUTONOMA DE NICARAGUA

UNAN-León

Facultad de ciencias y tecnología

INGENIERIA EN TELEMÁTICA
Componente Curricular: software como un servicio (LAB)

Ing. Julio González


Grupo: 01
Elaborado por:

 Osmany Asdrubal Sacasa Gomez


 Leyder Adiel Fuentes Moreno
Fecha: 18/11/2016

“A la libertad por la Universidad”


3.2 Creating the Blog Application
Raíles viene con una serie de secuencias de comandos llamados generadores que están diseñados
para hacer su la vida más fácil el desarrollo mediante la creación de todo lo que es necesario para
empezar a trabajar en una tarea particular. Uno de ellos es el generador de aplicaciones nuevas, lo
que le proporcionará la fundación de una aplicación Rails fresca de modo que usted no tiene que
escribir por sí mismo.

Para utilizar este generador, abre un terminal, navegar a un directorio en el que tiene derecho a
crear archivos, y el tipo:

Esto creará una aplicación Rails llamado Blog en un directorio de blogs e instalar la gema
dependencias que ya se mencionan en Gemfile utilizando paquete de instalación.

Puede ver todas las opciones de línea de comandos que el generador de aplicaciones Rails acepta por
carriles de rodadura nueva -h.

Después de crear la aplicación de blog, cambiar a la carpeta:

El directorio de blogs tiene una serie de archivos y carpetas generadas automáticamente que
conforman la Estructura de una aplicación Rails. La mayor parte del trabajo en este tutorial va a
ocurrir en la carpeta app/, pero aquí está una reducción básica sobre la función de cada uno de los
archivos y las carpetas que los rieles ha creado por defecto:
4 Hello, Rails!
Para empezar, vamos a conseguir un poco de texto en la pantalla rápidamente. Para ello, es necesario
para conseguir sus rieles en ejecución del servidor de aplicaciones.

4.1 Starting up the Web Server.


De hecho, tienes una aplicación Rails funcional ya. Para verlo, necesita comenzar una web servidor en
el equipo de desarrollo. Usted puede hacer esto mediante la ejecución del siguiente en el blog
directorio:
Si está utilizando Windows, usted tiene que pasar las secuencias de comandos en la carpeta bin
directamente a la Rubí intérprete, por ejemplo, rubí bin \ raíles del servidor.

La compilación de compresión de activos CoffeeScript y JavaScript requiere que tengas un JavaScript


tiempo de ejecución disponibles en el sistema, en ausencia de un tiempo de ejecución, verá un error
execjs durante la compilación de activos. Por lo general, Mac OS X y Windows vienen con un tiempo
de ejecución de JavaScript instalado. Raíles añade la gema therubyracer a la Gemfile generada en una
línea comentada de nuevas aplicaciones y se puede eliminar el comentario, si lo necesita.
therubyrhino es el tiempo de ejecución recomendada JRuby para los usuarios y se añade por defecto
a la Gemfile en aplicaciones generadas bajo JRuby. Tú puede investigar todos los tiempos de
ejecución soportados en ExecJS.

Esta se disparará hasta WEBrick, un servidor web con Ruby distribuido de forma predeterminada.
Para ver su aplicación en acción, abra una ventana del navegador y vaya a http: // localhost: 3000. Tú
verán la página de información por defecto Rails:
Para detener el servidor web, pulse Ctrl + C en la ventana de terminal en el que se está ejecutando.
Para verificar la servidor se ha detenido debería ver el cursor del símbolo del sistema de nuevo. Para
la mayoría de tipo UNIX incluyendo los sistemas Mac OS X este será un signo de dólar $. En el modo
de desarrollo, los carriles no lo hace generalmente requieren que reinicie el servidor; los cambios que
realice en los archivos serán automáticamente recogido por el servidor.

La página "Bienvenido a bordo" es la prueba de fuego para una nueva aplicación Rails: se asegura de
que usted tiene su software configurado correctamente suficiente para servir una página. También
puede hacer clic en Sobre el enlace entorno de su aplicación para ver un resumen de la solicitud de
ambiente.

4.2 Say "Hello", Rails.


Para obtener rieles diciendo "Hola", que necesita para crear, como mínimo, un controlador y una
vista.

El propósito de un controlador es recibir peticiones específicas de la aplicación. enrutamiento decide


qué controlador recibe la que se pide. A menudo, hay más de una ruta para cada controlador, y
diferentes rutas pueden ser servidas por diferentes acciones. El propósito de cada acción es para
recopilar información que le proporcione a una vista.

El propósito de una vista es para mostrar esta información en un formato legible por humanos. Un
importante distinción para hacer es que es el controlador, no la vista, donde se recoge la información.
La vista simplemente debe mostrar esa información. De forma predeterminada, plantillas de vista se
escriben en una lengua llamada eRuby (incrustado de rubíes) que se procesa por el ciclo de petición
en Rails antes de ser enviado al usuario.

Para crear un nuevo controlador, tendrá que ejecutar el generador de "controlador" y decirle que
usted desear un controlador llamado "bienvenida" con una acción llamada "índice", al igual que este:

Raíles crearán varios archivos y una ruta para usted.


El más importante de éstos son, por supuesto, el controlador, ubicada en app / controllers
/welcome_controller.rb y la vista, que se encuentra en app / views / bienvenidos / index.html.erb.

Abra la vista / archivo app / bienvenidos / index.html.erb en su editor de texto. Elimine todo el
existente código en el archivo, y reemplazarla con la siguiente línea de código:

4.3 Setting the Application Home Page.


Ahora que hemos hecho el controlador y vista, tenemos que decirle rieles cuando queremos "Hola,
Rieles! "Aparezca. En nuestro caso, queremos que aparezca cuando navegue a la URL raíz de nuestro
sitio, http: // localhost: 3000. Por el momento, "Bienvenido a bordo" está ocupando ese lugar.

A continuación, usted tiene que decirle a los carriles donde se encuentra su página real casa.

Abra el archivo de configuración / routes.rb en su editor.


Este es el archivo de ruta de su aplicación que tiene entradas de un DSL especial (dominio-específica
idioma) que le dice a los carriles de cómo conectar las solicitudes entrantes a controladores y
acciones. Esta archivo contiene muchas rutas de muestra en líneas comentadas, y uno de ellos en
realidad muestra cómo conectar la raíz de su sitio a un controlador y una acción específica. Busque la
línea comenzando por la raíz y se elimine. Debe ser algo como lo siguiente:

root 'índice de bienvenida #' dice rieles de corresponder las peticiones a la raíz de la aplicación de la
acción index del controlador de bienvenida y conseguir "bienvenido / index 'dice rieles para asignar
solicitudes a http: // localhost: 3000 / bienvenidos / índice de acción index del controlador de
bienvenida. Este fue creado anteriormente al ejecutar el generador de controlador (bin / rieles
generan controlador Índice de bienvenida).

Poner en marcha el servidor web de nuevo si es que lo detuvo para generar el controlador (bin / rieles
servidor) y vaya a http: // localhost: 3000 en su navegador. Vas a ver las "Hola, rieles!" mensaje que
puso en app / views / bienvenidos / index.html.erb, lo que indica que esta nueva ruta es de hecho va
a acción index WelcomeController 's y está haciendo que la vista correctamente.

Para obtener más información acerca del enrutamiento, consulte los carriles de enrutamiento de
afuera hacia adentro.

5 Getting Up and Running.


Ahora que ya has visto cómo crear un controlador, una acción y una vista, vamos a crear algo
con un poco más de sustancia.

En la aplicación Blog, ahora creará un nuevo recurso. Un recurso es el término utilizado colección
foros de objetos similares, tales como artículos, personas o animales. Puede crear, leer, actualizar y
destruir elementos para un recurso y estas operaciones se conocen como CRUD operaciones.
Rails proporciona un método resources que se puede utilizar para declarar un recurso REST estándar.
Es necesario agregar el recurso del artículo a la config / routes.rb de la siguiente manera:

Si ejecuta rutas bin / rastrillo, verá que se ha definido rutas para todos el estándar REST
comportamiento. El significado de la columna el prefijo (y otras columnas) se verá más adelante, pero
para Ahora note que Rails ha inferido el artículo de forma singular y hace uso significativo de la
distinción.
En la siguiente sección, se le añade la capacidad de crear nuevos artículos en su aplicación y estar
capaz de verlas. Esta es la "C" y la "R" de CRUD: creación y lectura. La forma para hacer esto se verá
así:

Se verá un poco básico, por ahora, pero eso esta bien. Miraremos mejorar el estilo por ella después.

5.1 Laying down the ground work


En primer lugar, se necesita un lugar dentro de la aplicación para crear un nuevo artículo. Un gran
lugar para ese estaría en / artículos / nuevo. Con la ruta ya definido, solicitudes ahora se pueden
hacer para / Artículos / nuevos en la aplicación. Navegar a http: // localhost: 3000 / articulos /
nuevo y verá una error de rutas:

Este error se produce porque la ruta necesita tener un controlador definido con el fin de servir a la
solicitud. La solución a este en particular problema es simple: crear un controlador llamado
ArticlesController. Tú puedes hacer esto mediante la ejecución este comando:
Si usted abre la aplicación recién generado / controladores / articles_controller.rb verá una
Controlador bastante vacío:

Un controlador es simplemente una clase que se define a heredar de ApplicationController. Está


dentro esta clase que usted va a definir los métodos que se convertirán en las acciones para este
controlador. Estas acciones realizarán operaciones CRUD sobre los artículos dentro de nuestro
sistema.

Hay métodos públicos, privados y protegidos en Ruby, pero sólo los métodos públicos pueden ser
acciones de los controladores. Para más detalles visita de programación Ruby.

Si actualiza http: // localhost: 3000 / artículos / nuevo ahora, obtendrá un nuevo error:
Rieles de error indica que no se puede encontrar la nueva acción dentro de la ArticlesController que
acaba de generar. Esto se debe a que cuando los controladores se generan en los carriles que están
vacíos de forma predeterminada, a menos que se diga que sus acciones deseadas durante el proceso
de generación.

Para definir manualmente una acción dentro de un controlador, todo lo que necesita hacer es definir
un nuevo método dentro del controlador. Abrir app / controllers / articles_controller.rb y dentro de
la clase ArticlesController, definir un nuevo método para que el controlador ahora se ve así:

Con el nuevo método definido en ArticlesController, si actualiza http: // localhost: 3000


/ Artículos / nueva verá otro error:
Usted está recibiendo este error, porque ahora Raíles espera que las acciones de civil como éste tener
puntos de vista asociados con ellos para mostrar su información. Sin vistas disponibles, Rieles errores
a cabo.
En la imagen superior, el fondo tiene ha truncado. Veamos lo que el pleno Lo ve así:

La falta de artículos de plantilla / nueva, nuevas aplicaciones / con {locale: [: es], formatos: [: html],
Manipuladores: [: Erb,: constructor,: café]}. Buscado en: * "/ ruta / a / blog / app / views"

Esa es una gran cantidad de texto! Vamos a ir rápidamente a través y comprender lo que cada parte
de lo que hace.

La primera parte identifica lo que la plantilla que falta. En este caso, es el de artículos / nueva
plantilla. Raíles primero buscará esta plantilla. Si no lo encuentra, entonces se intentará cargar una
plantilla llamado application / nuevo. Se ve una aquí porque el ArticlesController hereda de
ApplicationController. La siguiente parte del mensaje contiene un hash. La tecla: locale en este hash
simplemente indica lo que la plantilla lenguaje hablado debe ser recuperada. Por defecto, este es el
Inglés - o "en" - modelo. La siguiente tecla,: formatos especifica el formato de plantilla que se sirve en
la respuesta. El formato por defecto es: html, y así Carriles está buscando una plantilla HTML. La clave
final, : Manipuladores, nos está diciendo lo que los manipuladores de la plantilla podría ser utilizado
para hacer nuestra plantilla. : Erb ismost utiliza comúnmente para las plantillas HTML,: constructor se
utiliza para las plantillas XML, y: café CoffeeScript utiliza para construir las plantillas de JavaScript.

La parte final de este mensaje nos dice dónde Carriles ha buscado las plantillas. Plantillas dentro de
una aplicación Rails básica como esta se mantienen en un solo lugar, pero en más complejo
aplicaciones que podrían ser muchos caminos diferentes.
La plantilla más simple que trabajaría en este caso se encuentra en una app/views
/articles/new.html.erb. La extensión de este nombre de archivo es clave: la primera es la extensión
formato de la plantilla, y la segunda extensión es el controlador que se utilizará. Rails es tratar de
encontrar una plantilla llamada nueva artículos / app / views dentro de la aplicación. Los formato de
esta plantilla sólo puede ser HTML y el manejador debe ser uno de erb, constructor o Café . Debido a
que desea crear un nuevo formulario HTML, usted va a utilizar el lenguaje de ERB. Por lo tanto, el
archivo debería llamarse artículos / new.html.erb y tiene que estar situado en el interior del
aplicación del directorio / puntos de vista de la aplicación.

Vaya por delante ahora y crear un nuevo archivo en app / views / artículos / new.html.erb y escribir
este contenido en ella:

Al actualizar http: // localhost: 3000 / artículos / nuevo ahora va a ver que la página tiene una
título. La ruta, controlador, la acción y la vista están ahora trabajando en armonía! Es tiempo de
crear la forma de un nuevo artículo.

5.2 The first form.


Para crear un formulario dentro de esta plantilla, que va a utilizar un constructor de formulario. El
constructor de la forma primaria Rieles para la proporciona un método de ayuda llamado form_for.
Para utilizar este método, agregue este código en app / views / artículos / new.html.erb:
Si actualiza la página ahora, verá exactamente la misma forma que en el ejemplo. edificio
formas en Rails es realmente así de fácil!.
Cuando se llama a form_for, se le pasa un objeto de identificación para este formulario. En este caso,
es el símbolo : artículo. Esto le dice al ayudante form_for lo que esta forma es para. Dentro del
bloque para este método, el objeto FormBuilder - representada por f - se utiliza para la construcción
de dos etiquetas de texto y dos campos, uno cada uno para el título y el texto de un artículo. Por
último, una llamada a presentar en el objeto f voluntad crear un botón de envío del formulario.

Hay un problema con esta forma aunque. Si inspecciona el código HTML que se genera, por viendo el
código fuente de la página, verá que el atributo de acción para el formulario está apuntando en /
artículos / nuevo. Esto es un problema porque esta ruta va a la misma página que estás justo en el
momento, y esa ruta sólo se debe utilizar para mostrar el formulario para un nuevo artículo.

La forma tiene que utilizar una dirección URL diferente con el fin de ir a otro lugar. Esto puede
hacerse simplemente con la opción: url de form_for. Normalmente, en los carriles, la acción que se
utiliza para nuevos envíos de formularios de este tipo se denomina "crear", por lo que la forma debe
apuntar a esa acción.

Editar la línea form_for dentro app / views / artículos / new.html.erb a tener este aspecto:
En este ejemplo, el ayudante articles_path se pasa a la opción: url. Para ver lo que Rails
hacemos con esto, miramos hacia atrás en la salida de las rutas bin / rake:

El ayudante articles_path dice rieles para señalar la forma al patrón URI asociado con el artículos
prefijo de; y el formulario (por defecto) enviar una solicitud POST a esa ruta. Esto es asociada a la
acción create del controlador de corriente, el ArticlesController.

Con la forma y su ruta asociada definidos, usted será capaz de rellenar el formulario y luego haga clic
en el botón Enviar para iniciar el proceso de creación de un nuevo artículo, por lo que seguir adelante
y hacer ese. Cuando se envía el formulario, usted debe ver un error conocido:

Ahora tendrá que crear la acción create dentro de la ArticlesController para que esto funcione.

5.3 Creating articles .


Para hacer que la "acción Desconocido" desaparezca, se puede definir una acción create dentro de la
clase ArticlesController en app / controllers / articles_controller.rb, por debajo de la nueva acción,
como se muestra:
Si vuelve a enviar el formulario ahora, verá otro error familiar: una plantilla no se encuentra. Eso es
bien, nos podemos pasar por alto que, por ahora. Lo que la acción create debería estar haciendo es
salvar nuestro nuevo artículo a la base de datos.

Cuando se envía un formulario, los campos del formulario se envían a los rieles como parámetros.
Estos parámetros pueden ser referenciados dentro de las acciones del controlador, por lo general
para llevar a cabo una tarea particular. Para ver lo que estos parámetros se ven como, cambie la
acción create a esto:

El método render aquí está tomando un hash muy simple con una llave de la llanura y el valor
de params [: artículo] .inspect. El método params es el objetivo que representa los parámetros
(o campos) que vienen de la forma. El método devuelve un params ActiveSupport ::
HashWithIndifferentAccess objeto, lo que le permite acceder a las claves de la el hash mediante
cadenas o símbolos. En esta situación, los únicos parámetros que son importantes arethe los de la
forma.

Asegúrese de que tiene una firme comprensión del método params, como lo vas a usar con
bastante regularidad. Vamos considerar un ejemplo de URL:
http://www.example.com/?username=dhh& email=dhh@email.com. En este URL, params [:
nombre de usuario] sería igual a "DHH" y params [: correo electrónico] sería igual a "
dhh@email.com ".
Si vuelve a enviar el formulario una vez más se va ahora ya no se obtiene el error de plantilla que
falta. En su lugar, verá algo parecido a lo siguiente:

Esta acción se muestra ahora los parámetros para el artículo que regresa después de la formar. Sin
embargo, esto no es realmente tan útil. Sí, se puede ver los parámetros, pero nada en particular, se
está haciendo con ellos.

5.4 Creating the Article model.


Los modelos de Rails utilizan un nombre singular, y sus correspondientes tablas de bases de datos
utilizan un plural nombre. Rieles proporciona un generador para la creación de modelos, que la
mayoría de los desarrolladores de Rails tienden a utilizar al crear nuevos modelos. Para crear el nuevo
modelo, ejecute este comando en su terminal:

Con ese comando le dijimos a los carriles que queremos un modelo artículo, junto con un título
atributo de tipo cadena, y un atributo de texto de tipo texto. Esos atributos son automáticamente
añadido a la tabla de artículos en la base de datos y se asigna al modelo artículo.

Carriles respondido mediante la creación de un grupo de archivos. Por ahora, sólo estamos
interesados en app / models /article.rb y db / migrar / 20140120191729_create_articles.rb (su
nombre podría ser un poco diferente). Este último es responsable de crear la estructura de base de
datos, que es lo que vamos a veremos en la próxima.
Active Record es suficiente para asignar automáticamente los nombres de columna para modelar
atributos inteligentes, lo que significa que no tiene que declarar atributos dentro de los modelos de
Rails, ya que esto puede hacer automáticamente por Active Record.

5.5 Running a Migration.


Como acabamos de ver, bin / rieles generan modelo creado un archivo de migración de base de datos
dentro de la db / migrar directorio. Las migraciones son clases de Ruby que se han diseñado para que
sea fácil de crear y modificar tablas de base de datos. Raíles utiliza comandos rastrillo para ejecutar
las migraciones, y es posible deshacer una migración después de que se ha aplicado a su base de
datos. Los nombres de archivo de migración incluir una marca de tiempo para asegurarse de que se
procesan en el orden en que fueron creados.

Si nos fijamos en el db / migrar archivo / 20140120191729_create_articles.rb (recuerda, será la suya


tener un nombre ligeramente diferente), esto es lo que encontrará:

La migración de arriba crea un método llamado change que se llamará cuando se ejecuta este
migración. La acción se define en este método también es reversible, lo que significa Rails sabe cómo
revertir el cambio realizado por esta migración, en caso de que desee invertir en otro momento.
Cuando se ejecuta esta migración se creará una tabla de artículos con una columna de string y una
columna de texto. También crea dos campos de fecha y hora para permitir que los carriles para
realizar un seguimiento y creación de artículos actualizar times.

For más información acerca de las migraciones, consulte Rieles migraciones de bases de datos.

En este punto, se puede utilizar un comando de rastrillo para ejecutar la migración:


Raíles ejecutará este comando de migración y le dirá que crea la tabla Artículos.

Debido a que está trabajando en el entorno de desarrollo de forma predeterminada, este comando se
aplicará a la base de datos se define en la sección de desarrollo de su config / database.yml. Si desea
ejecutar las migraciones en otro medio ambiente, por ejemplo, en la producción, que debe pasar
explícitamente cuando invocando el comando: bin db / rastrillo: migrar RAILS_ENV = producción.

5.6 Saving data in the controller.


De vuelta en ArticlesController, tenemos que cambiar la acción create para utilizar el nuevo artículo
modelo para guardar los datos en la base de datos. Abrir app / controllers / articles_controller.rb y
cambiar la acción para crear el aspecto siguiente:
Aquí es lo que está pasando: todos los modelos de rieles se puede inicializar con sus respectivos
atributos, el cual se asignan automáticamente a las respectivas columnas de base de datos. En la
primera línea que hacemos sólo que (recordemos que params [: artículo] contiene los atributos que
nos interesan). Entonces, @ Article.save es responsable de salvar el modelo en la base de datos. Por
último, el redirigimos usuario a la acción show, que definiremos más adelante.

Es posible que se pregunte por qué la A en Article.new se escribe con mayúscula anterior, mientras
que la mayoría de otros las referencias a artículos de esta guía se han utilizado en minúsculas. En este
contexto, nos estamos refiriendo a la clase denominada artículo que se define en \ modelos \
article.rb. Los nombres de clase en Ruby obligada comenzar con una letra mayúscula.

Como veremos más adelante, @ article.save devuelve un valor booleano que indica si el artículo se
salvó o no.

Si ahora ir a http: // localhost: 3000 / artículos / nueva podrás casi será capaz de crear una artículo.
¡Intentalo! Debe obtener un error que se ve así:

Rails tiene rieles varios seguridad características que ayudarte escribir segura aplicaciones, y tú eres
correr dentro uno de ellos ahora. Éste se llama fuerte parámetros, lo que nos obliga a decir rieles
exactamente qué parámetros hay disponibles en nuestras controlleractions.
¿Por qué tiene que molestarse? La capacidad de agarrar y asignar automáticamente todos los
controladores parámetros a su modelo de una sola vez hace que el trabajo del programador, pero por
esta conveniencia también permite un uso malintencionado. ¿Qué pasa si una solicitud al servidor fue
diseñado para buscar como una nueva forma de artículo presentará, pero también se incluye campos
adicionales con los valores que violaron su la integridad de las aplicaciones? Serían "masa asignados
'en su modelo y luego en el base de datos junto con los buenos - pero potencialmente romper su
aplicación o peor.

Tenemos a la lista blanca nuestros parámetros de regulación para evitar la asignación de masas ilícito.
En este caso, queremos tanto permitir y exigir a los parámetros de título y de texto para uso válido de
crear. La sintaxis para esto introduce requerir y permiso. El cambio implicará una línea en la acción de
crear:

Esto se factoriza a menudo a cabo en su propio método para que pueda ser reutilizado por múltiples
acciones en el mismo controlador, por ejemplo, crear y actualizar. Por encima y más allá de las
cuestiones de asignación de masas, el método se hace a menudo privado para asegurarse de que no
se puede llamar fuera de su intención contexto. Este es el resultado:
Para obtener más información, consulte la referencia anterior y este artículo blog sobre Fuerte
Parámetros.

5.7 Showing Articles.


Si envía el formulario de nuevo ahora, los carriles se quejan de no encontrar la acción show.
Eso no es muy útil aunque, por lo que vamos a añadir la acción show antes de proceder.

Como hemos visto en la salida de las rutas bin / rastrillo, la ruta para la acción show es el siguiente:

La sintaxis especial: Id dice carriles que esta ruta espera un: parámetro id, que en nuestro caso será el
identificador del artículo.

Como lo hicimos antes, tenemos que añadir la acción show en app /controllers/articles_controller.rb
y su respectiva vista.

Una práctica frecuente es colocar las acciones CRUD estándar en cada controlador en el siguiente
orden: índice, demostración, nuevo, editar, crear, actualizar y destruir. Se puede usar cualquier
orden que se desee, pero tenga en cuenta que estos son métodos públicos; como se ha mencionado
anteriormente en esta guía, deben ser colocados antes de cualquier método privado o protegido en el
controlador con el fin de trabajar.

Teniendo en cuenta que, vamos a añadir la acción show, de la siguiente manera:


Un par de cosas a tener en cuenta. Utilizamos Article.find para encontrar el artículo que nos interesa,
que pasa en params [: id] para obtener el: parámetro id de la solicitud. También usamos una
instancia variable (con el prefijo @) para almacenar una referencia al objeto del artículo. Hacemos
esto porque los carriles pasará todas las variables de instancia a la vista.

Ahora, cree un nuevo archivo app / views / artículos / show.html.erb con el siguiente contenido:
Con este cambio, debe finalmente ser capaz de crear nuevos artículos. Visitar http: // localhost: 3000
/ articulos / nuevo y darle una oportunidad!

5.8 Listing all articles.


Todavía tenemos una forma de enumerar todos nuestros artículos, por lo que vamos a hacer eso. La
ruta para esto ya que por salida de rutas bin / rastrillo es:

Añadir la acción index correspondiente para esa ruta en el interior del ArticlesController en el app /
controllers / archivo articles_controller.rb. Cuando escribimos una acción index, lo de siempre la
práctica es colocarlo como el primer método en el controlador. Vamos a hacerlo:
Y, por último, añadir el punto de vista de esta acción, que se encuentra en app / views / artículos /
index.html.erb:

Ahora bien, si usted va a http: // localhost: 3000 / artículos verá una lista de todos los artículos que
has creado.
5.9 Adding links.
Ahora puede crear, mostrar y artículos de la lista. Ahora vamos a añadir algunos enlaces para navegar
a través páginas.

Abrir app / views /welcome / index.html.erb y modifican de la siguiente manera:

El método link_to es uno de los ayudantes de vista incorporados en Rails. Se crea un hipervínculo en
función del texto para mostrar y dónde ir - en este caso, a la trayectoria de los artículos.

Vamos a añadir enlaces a los otros puntos de vista, así, a partir de la adición de este "Nuevo artículo"
enlace a app / views / artículos / index.html.erb, por encima de la etiqueta <table>:
Este enlace le permitirá llegar al formulario que le permite crear un nuevo artículo.

Ahora, añadir otro eslabón en app / views / artículos / new.html.erb, debajo del formulario, para
volver a la acción index:

Por último, añadir un enlace al / views / artículos / plantilla de aplicación show.html.erb para volver
a la acción index, así, por lo que las personas que están viendo un solo artículo puede volver atrás y
ver la Lista completa de nuevo:
Si desea vincular a una acción en el mismo controlador, no es necesario especificar el :Opción de
controlador, como Rails utilizar el controlador de corriente por defecto.

En el modo de desarrollo (que es lo que está trabajando en forma predeterminada), Carriles vuelve a
cargar su aplicación con cada petición del navegador, así que no hay necesidad de parar y reiniciar la
web servidor cuando se hace un cambio.

5.10 Adding Some Validation.


El archivo de modelo, aplicación / modelos / article.rb es tan simple como se puede conseguir:
No hay mucho a este archivo - pero tenga en cuenta que la clase Articulo hereda de
ActiveRecord :: Base. Active Record suministra una gran cantidad de funcionalidad a sus modelos de
Rieles de forma gratuita, incluyendo la base de datos básico CRUD (Create, Read, Update, destruye)
las operaciones, datavalidation, así como un apoyo sofisticado búsqueda y la capacidad de relacionar
múltiples modelos a otro.

Rieles incluye métodos para ayudar a validar los datos que se envía a los modelos. Abre el app /
modelos / archivo article.rb y editarlo:

Estos cambios se asegurará de que todos los artículos tienen un título que es al menos cinco
caracteres. Carriles pueden validar una variedad de condiciones en un modelo, incluyendo la
presencia o la singularidad de columnas, su formato, y la existencia de los objetos asociados.
Validaciones están cubiertas de Activo detalle en las validaciones de registro.

Con la validación ahora en su lugar, cuando se llama @article.save en un artículo válido, lo hará falso
retorno . Si abre app / controllers / articles_controller.rb de nuevo, usted notará que no
comprobamos el resultado de llamar @article.save dentro de la acción de crear. Si @article.save
fracasa en esta situación, tenemos que mostrar la forma de vuelta al usuario. Para ello, cambie el
nuevo y crear acciones dentro app / controllers / articles_controller.rb a los siguientes:
La acción new está creando una nueva variable de instancia llamada @article, y verá por qué
es decir, en tan sólo unos minutos.

Nótese que dentro de la creación de la acción que utilizamos en lugar de hacer que redirect_to
cuando excepto los retornos falsa. El método render se utiliza para que el objeto @article se pasa de
nuevo a la nueva plantilla cuando se representa. Esta representación se realiza dentro de la misma
petición como el formulario de presentación, mientras que el redirect_to le dirá al navegador para
emitir una nueva solicitud.

Si vuelve a cargar http: // localhost: 3000 / artículos / nuevos tratando de salvar a un artículo sin un
título, Raíles le enviará de vuelta al formulario, pero eso no es muy útil. Es necesario avisar al usuario
de que algo salió mal. Para ello, se modificará app / views / artículos / new.html.erb para comprobar
para los mensajes de error:
Algunas cosas están en marcha. Comprobamos si hay errores con @article.errors.any? y
en ese caso se muestra una lista de todos los errores con @article.errors.full_messages.

pluralize es un ayudante carriles que toma un número y una cadena como sus argumentos. Si el
número es mayor que uno, la cadena se pluralizará automáticamente.

La razón por la que hemos añadido @article = Article.new en el ArticlesController es que de lo


contrario habría @article nula en nuestra opinión, y llamando @article.errors.any? arrojaría un
error.

Raíles ajusta automáticamente los campos que contienen un error en un div con la clase
field_with_errors. Se puede definir una regla CSS para hacerlos destacado.

Ahora usted obtendrá un mensaje de error al guardar un buen artículo sin título cuando se intenta
para hacer precisamente eso en la nueva forma de artículo http: // localhost: 3000 / artículos /
nueva:
5.11 Updating Articles.
Hemos cubierto la parte de "CR" de CRUD. Ahora vamos a centrarnos en la parte de "U", la
actualización de los artículos.

El primer paso vamos a tomar es la adición de una acción de edición al ArticlesController, en general,
entre las nuevas y crear acciones, como se muestra:
La vista contendrá una forma similar a la que utilizamos al crear nuevos artículos. Crear un
archivo llamado app / views / artículos / edit.html.erb y hacer que se vea de la siguiente
manera:
Esta vez señalamos la forma a la acción de actualización, que no está definido todavía, pero va a ser
muy pronto.

El método: :path opción dice rieles que queremos esta forma que se presentará a través de la
PARCHE método HTTP que es el método HTTP que se espera que utilice para actualizar los recursos
de acuerdo con el protocolo REST.

El primer parámetro de form_for puede ser un objeto, por ejemplo, @article que haría que el
ayudante rellenar el formulario con los campos del objeto. Pasando en un símbolo (:artículo) con el
mismo nombre que la variable de instancia (@article) también conduce automágicamente a la misma
conducta. Esto es lo que está pasando aquí. Más detalles se pueden encontrar en la documentación
form_for.

A continuación, tenemos que crear la acción de actualización en app/controllers/


articles_controller.rb. Añádelo entre la acción y crear el método privado:
El nuevo método, actualización, se utiliza cuando se desea actualizar un registro que ya existe, y se
acepta un hash que contiene los atributos que desea actualizar. Como antes, si había un error al
actualizar el artículo queremos mostrar el formulario de vuelta al usuario.

Reutilizamos el método article_params que hemos definido anteriormente para crear la acción.

No es necesario pasar todos los atributos para actualizar. Por ejemplo, si usted llamaría
@Article.update (título: "Un nuevo título ') Rieles sólo se actualizará el atributo de título, dejando
todos los demás atributos intactos.

Por último, queremos mostrar un enlace a la acción de edición en la lista de todos los artículos, por lo
que vamos a añadir que ahora app / views / artículos / index.html.erb para hacer que aparece junto
al enlace "Mostrar":

Y vamos a añadir una a la app/ views / artículos / plantilla de aplicación show.html.erb así, de modo
que también hay un enlace "Editar" en la página de un artículo. Añadir este en la parte inferior de la
plantilla:
Y así es como nuestra aplicación se ve hasta el momento:

5.12 Using partials to clean up duplication in views.


Nuestra página de edición se ve muy similar a la nueva página; en De hecho, ambos comparten el
mismo código para la visualización la forma. Vamos a eliminar esta la duplicación mediante el uso de
una vista parcial. Por convención, archivos parciales tienen el prefijo con un guión bajo.

Puede leer más acerca de los parciales en los esquemas y que hacían en los carriles guía.

Crear un nuevo archivo app / views / artículos / _form.html.erb con el siguiente contenido:
Todo a excepción de la declaración form_for sigue siendo el mismo. La razón por la que podemos
utilizar esto, la declaración más simple form_for más corto para sustituir a cualquiera de las otras
formas es que @article es un recurso que corresponde a un conjunto completo de rutas RESTful, y
Rails es capaz de inferir el cual URI y el método a utilizar. Para obtener más información sobre este
uso de form_for, consulte Recursos orientado estilo.

Ahora, vamos a actualizar el app / views / artículos / vista new.html.erb aplicación para utilizar este
nuevo parcial, reescribir por completo:
Luego hacer lo mismo para el app / views / artículos / vista edit.html.erb aplicación:

5.13 Deleting Articles.


Ahora estamos listos para cubrir la "D" parte de un CRUD, la supresión de los artículos de la base de
datos. Siguiendo la convención REST, la ruta para la eliminación de artículos como por salida de bin
/rake routes es:

El método de enrutamiento de eliminación se debe utilizar para las rutas que destruyen los recursos.
Si esto se dejó como ruta get típica, podría ser posible que las personas a las embarcaciones de URL
maliciosas como este:

Utilizamos el método de eliminación de la destrucción de los recursos, y esta ruta se asigna al destruir
acción dentro app / controllers / articles_controller.rb, que aún no existe. método destroy es
generalmente la última acción CRUD en el controlador, y al igual que la otra CRUD pública acciones,
que deben colocarse antes de cualquier método o privadas protegidas. Vamos a añadir que:
El ArticlesController completa en el archivo app / controllers / articles_controller.rb debe ahora
el siguiente aspecto:
Puede llamar a destruir objetos en Active Record cuando se desea eliminarlos de la base de datos.
Tenga en cuenta que no es necesario añadir una vista para esta acción ya que estamos redirigiendo
a la acción index.

Por último, añadir un enlace de "destruir" a la plantilla de acción index (app / views / artículos
/index.html.erb) para envolver todo junto.
Aquí estamos usando link_to de una manera diferente. Se pasa la ruta nombrado como el segundo
argumento, y luego las opciones como otro argumento. El: método y: 'datos confirman' se utilizan
opciones como atributos de HTML5 de manera que cuando se hace clic en el enlace, rieles primera
mostrará una confirmar diálogo al usuario, y luego enviar el enlace con el método Delete. Esto se
hace a través de la JavaScript, jquery_ujs de archivos que se incluye automáticamente en el diseño de
la aplicación (App / views / layouts / application.html.erb) al generar la aplicación. Sin esto archivo,
no aparecería el cuadro de diálogo de confirmación.
Enhorabuena, ahora se puede crear, mostrar, listar, actualizar y destruir artículos.

En general, los carriles alienta el uso de recursos de objetos en lugar de declarar rutas manualmente.
Para obtener más información acerca del enrutamiento, consulte los carriles de enrutamiento de
afuera hacia adentro.

6 Adding a Second Model.


Es el momento de añadir un segundo modelo para la aplicación. El segundo modelo se encargará de
los comentarios sobre los artículos.

6.1 Generating a Model.


Vamos a ver el mismo generador que hemos utilizado antes de la hora de crear el modelo artículo.
Esta vez vamos a crear un modelo de comentario de mantener la referencia de los comentarios del
artículo. Correr este comando en el terminal:

Este comando generará cuatro archivos:


First, take a look at app/models/comment.rb :

Esto es muy similar al modelo que viste el artículo anterior. La diferencia está en la línea de
belongs_to: artículo, que establece una asociación Active Record. Vas a aprender un poco sobre
asociaciones en la siguiente sección de esta guía.

Además del modelo, rieles también ha hecho una migración para crear la correspondiente tabla de
BD:
La línea de t.references crea una columna entera llamada article_id, un índice para él, y una
restricción de clave externa que apunta a la tabla de artículos. Vaya por delante y ejecutar la
migración:

Rails es lo suficientemente inteligente para ejecutar solamente las migraciones que aún no lo hayan
hecho funcionar en contra la base de datos actual, por lo que en este caso, sólo verá:

6.2 Associating Models.


Asociaciones de Active Record permiten declarar fácilmente la relación entre los dos modelos. En
el caso de los comentarios y artículos, se podría escribir un vistazo a las relaciones de esta manera:
1. Cada comentario pertenece a un artículo.
2. Un artículo puede tener muchos comentarios.

De hecho, esto está muy cerca de la sintaxis que utiliza rieles para declarar esta asociación. Tienes
ya se ha visto la línea de código dentro del modelo Comentarios (app / modelos / comment.rb)
que hace cada comentario pertenece a un artículo:
Tendrá que editar app / modelos / article.rb añadir el otro lado de la asociación:

Estas dos declaraciones permiten un buen poco de comportamiento automático. Por ejemplo, si
usted tiene aninstance @article variable que contiene un artículo, puede recuperar todos los
comentarios perteneciente a ese artículo como una matriz usando @article.comments.

Para obtener más información sobre las asociaciones de Active Record, ver las Asociaciones de Active
Record guía.

6.3 Adding a Route for Comments.


Al igual que con el controlador de bienvenida, tendremos que añadir una ruta para que los carriles
sabe dónde estamos le gustaría navegar para ver los comentarios. Abrir el archivo de config /
routes.rb de nuevo, y editarlo como sigue:
Esto crea los comentarios como un recurso anidado dentro de los artículos. Esta es otra parte de la
captura la relación jerárquica que existe entre los artículos y comentarios.

Para obtener más información sobre el enrutamiento, consulte la guía de rieles de enrutamiento.

6.4 Generating a Controller.


Con el modelo en la mano, se puede dar vuelta a su atención a la creación de un controlador de
juego.
Una vez más, vamos a utilizar el mismo generador hemos utilizado antes:
Al igual que con cualquier blog, nuestros lectores podrán crear sus comentarios directamente
después de leer el artículo, y una vez que han añadido su comentario, se enviará de nuevo a la página
del artículo espectáculo para ver su comentario aparece ahora. Debido a esto, nuestra
CommentsController está ahí para proporcionar un método para crear y eliminar los comentarios
spam en los comentarios cuando llegan.

Así que en primer lugar, vamos a cable hasta la plantilla del artículo espectáculo (app / views /
artículos / show.html.erb) que nos dejó hacer un nuevo comentario:
Esto añade un formulario en la página de presentación del artículo que crea un nuevo mensaje
llamando a la CommentsController crear la acción. La llamada form_for aquí utiliza una matriz, que
construirá una ruta anidada, tales como / artículos / 1 / comentarios.

Vamos a crear el alambre hacia arriba en app / controllers / comments_controller.rb:


Vas a ver un poco más de complejidad aquí de lo que hizo en el controlador de artículos. Eso es un
efectos secundarios de la anidación que se ha configurado. Cada solicitud de un comentario tiene que
seguir la pista del artículo al que está unido el comentario, por tanto, la llamada inicial al método find
el modelo artículo para obtener el artículo en cuestión.

Además, el código se aprovecha de algunos de los métodos disponibles para una asociación.
Utilizamos el método create en @article.comments para crear y guardar el comentario. Esta voluntad
vincular automáticamente el comentario por lo que pertenece a ese artículo en particular.

Una vez que hemos hecho el comentario, enviamos al usuario de vuelta al artículo original
utilizando la article_path (@ article) ayudante. Como ya hemos visto, esto llama a la acción show
de la ArticlesController que a su vez hace que la plantilla show.html.erb. Aquí es donde queremos
el comentario que muestra, por lo que vamos a añadir a la app / views / artículos / show.html.erb.
Ahora puede agregar artículos y comentarios a tu blog y hacer que se muestran en la derecha
lugares.
7 Refactoring.
Ahora que tenemos artículos y comentarios de trabajo, echar un vistazo a las app / views
/articles/show.html.erb plantilla. Es conseguir largo e incómodo. Nosotros podemos usar
parciales para limpiarlo.

7.1 Rendering Partial Collections.


En primer lugar, vamos a hacer un comentario parcial extraer mostrando todos los comentarios para
el artículo. Crear las aplicaciones de archivos app / views / comentarios /_comment.html.erb y
poner el siguiente en eso:

A continuación, puede cambiar app / views / artículos /show.html.erb para parecerse a lo siguiente:
Esto ahora hará que el parcial en app / views / comentarios / _comment.html.erb una vez por cada
comentan que está en la colección @article.comments. Como el método render itera sobre
@Colección article.comments, se asigna a cada comentario a una variable local con el mismo nombre
como el parcial, en este caso, comentario, que pasa a estar disponible en el parcial para nosotros para
mostrar.

7.2 Rendering a Partial Form.


También debemos avanzar que la nueva sección de comentarios a su propio parcial. Una vez más, se
crea un archivo app / views / comentarios / _form.html.erb que contiene:

A continuación, hacer las app / views / artículos / show.html.erb ser similar al siguiente:
El segundo render define la plantilla parcial queremos hacer, comentarios / formulario. raíles es lo
suficientemente inteligente como para detectar la barra diagonal en esta cadena y darse cuenta de
que desea procesar el archivo _form.html.erb vistas en el directorio / app / comentarios.

El objeto @article está disponible para cualquier parciales representan en la vista debido a lo
definimos como una variable de instancia.

8 Deleting Comments,
Otra característica importante de un blog es ser capaz de eliminar los comentarios de spam. Para ello,
nos necesitará implementar un enlace de algún tipo en la vista y una destruir acción en el
CommentsController.
Así que en primer lugar, vamos a añadir el enlace de eliminación en la app / views / comentarios /
_comment.html.erb parcial:

Al hacer clic en este nuevo "Destruye comentario" enlace se disparar un DELETE / articulos /:
article_id / comentarios /: id a nuestro CommentsController, que luego puede usar esto para
encontrar el comentario deseamos eliminar, por lo que vamos a añadir una acción de destruir a
nuestro controlador (App / controllers / comments_controller.rb):
La acción destruir será encontrar el artículo que estamos mirando, busca el comentario dentro de la
@Colección article.comments, y posteriormente retirarlo de la base de datos y nos envía de nuevo a
la mostrar la acción para el artículo.

8.1 Deleting Associated Objects.


Si elimina un artículo, también tendrán sus comentarios asociados a eliminar, de lo contrario, sería
simplemente ocupar un espacio en la base de datos. Raíles permite el uso de la opción depende de
una asociación para lograr esto. Modificar el artículo modelo, aplicación / modelos / article.rb, de
la siguiente manera:
9 Security .
9.1 Basic Authentication.
Si se va a publicar su blog en línea, nadie sería capaz de añadir, editar y eliminar artículos
o eliminar los comentarios.

Rieles proporciona un sistema de autenticación HTTP muy simple que funciona muy bien en esta
situación.
En el ArticlesController tenemos que tener una manera de bloquear el acceso a las distintas acciones
si el persona no está autenticado. Aquí podemos utilizar los rieles http_basic_authenticate_with
método, que permite el acceso a la acción solicitada si ese método permite.

Para utilizar el sistema de autenticación, lo especificamos en la parte superior de nuestra


ArticlesController en app / controllers / articles_controller.rb. En nuestro caso, queremos que el
usuario sea autenticado en cada acción, excepto index y show, por lo que escribimos:

También queremos permitir que sólo los usuarios autenticados de eliminar los comentarios, por lo
que en el CommentsController (app / controllers / comments_controller.rb) escribimos:
Ahora bien, si se intenta crear un nuevo artículo, que será recibido con una autenticación básica HTTP
reto:
Otros métodos de autenticación están disponibles para aplicaciones Rails. dos populares
autenticación complementos para rieles son los carriles Legado del motor y la gema Authlogic, junto
con un número de otros.

9.2 Other Security Considerations,


La seguridad, especialmente en aplicaciones web, es una zona amplia y detallada. Seguridad en sus
rieles aplicación se explica con más profundidad en el rubí en los carriles guía de seguridad.

10 What's Next?.
Ahora que ya has visto su primera aplicación Rails, usted debe sentirse libre para actualizarlo y
experimento por su cuenta. Pero usted no tiene que hacerlo todo sin ayuda. Como sea
necesario la asistencia de levantarse y correr con rieles, no dude en consultar a estos recursos
de apoyo:
*El Ruby on Rails Guías
*El rubí en los carriles Tutorial
*El Ruby on Rails lista de correo
*El canal #rubyonrails en irc.freenode.net

Raíles también viene con una función de ayuda que se puede generar usando la línea de comandos
rastrillo utilidad:
*Correr rake doc:guides pondrán una copia completa de las guías de los carriles en las guías
doc /carpeta de su aplicación. Abrir doc / guías / index.html en su navegador web to explore
las guías.

*Correr rake doc:rails carriles pondrán una copia completa de la documentación de la API
para los rieles en el carpeta / API doc de su aplicación. Abrir doc / api / index.html en su
navegador web para explorar la documentación de la API.

Para ser capaz de generar las guías de Rieles localmente con el doc: guías rastrillo tarea que necesita
instalar las gemas RedCloth y Nokogiri. Añadirlo a su Gemfile y ejecutar bundle instalar y Usted está
listo para ir.

11 Configuration Gotchas.
La forma más fácil de trabajar con Rails es almacenar todos los datos externos como UTF-8. Si no lo
hace, Ruby las bibliotecas y los rieles a menudo será capaz de convertir sus datos nativos en UTF-8,
pero esto no lo hace siempre trabaja de forma fiable, por lo que es mejor asegurarse de que todos los
datos externa es UTF-8.

Si ha cometido un error en esta área, el síntoma más común es un diamante negro con un signo de
interrogación dentro aparece en el navegador. Otro síntoma común es caracteres así como "Ã1/4"
que aparece en lugar de "U". Carriles toma un número de pasos internos para mitigar causas
comunes de estos problemas que pueden ser detectados y corregidos automáticamente. Sin
embargo, si tiene datos externos que no se almacena como UTF-8, puede provocar ocasionalmente
este tipo de cuestiones que no pueden ser detectados automáticamente por rieles y corregidos.

Dos fuentes muy comunes de datos que no son UTF-8:


1. El editor de texto: La mayoría de los editores de texto (como TextMate), por defecto para
guardar archivos como UTF-8. Si su editor de texto no lo hace, esto puede dar lugar a
caracteres especiales que se introducir en sus plantillas (como el correo) para que aparezca
como un diamante con un signo de interrogación en el interior en el navegador. Esto también
se aplica a los archivos de traducción i18n. La mayoría de los editores que no tiene ya por
defecto a UTF-8 (como algunas versiones de Dreamweaver) ofrecen una manera de cambiar
el valor por defecto a UTF-8. Hacerlo.

2. Su base de datos: Carriles por defecto para la conversión de los datos de su base de datos en
UTF-8 en EL limite. Sin embargo, si su base de datos no está utilizando UTF-8 internamente,
puede que no sea capaz de almacenar todos los personajes que entran en sus usuarios. Por
ejemplo, si su base de datos es el uso del latín 1 internamente, y su usuario introduce un ruso,
hebreo, o japonés carácter, los datos se perderán para siempre una vez que entre en la base
de datos. Si es posible, utilice.

Potrebbero piacerti anche