• Inspiración
  • Tutoriales
  • Bootcamp

En1Mes

  • Inspiración
  • Tutoriales
  • Bootcamp

StreetmusicMap parte 1: Combobox uno a muchos en Ruby on Rails

Hola Rubystas! para poner en práctica lo aprendido, lo mejor es crear proyectos experimentales para jugar. Aquí les presento una aplicación llamada streetmusicMap, está en su fase inicial, prototipo que comencé este fin de semana, y el cual estoy construyendo junto con mi partner de Software y creadora del blog ConciertosComentados: Melissa.

Para desarrollar esta app, comenzaré con la creación de 2 Scaffolds: Musician e Instrument. y los uniremos en el modelo a través de una relación “uno a muchos”, en donde visualmente nos ayudará un Combobox. En la Segunda Parte  mostraré como esa data la integramos a un Google Map, usando la gema gmaps4Rails.

 Creando la App.

Abres un Terminal y escribes:

$ rails new mapa

Acceder al proyecto desde el terminal:

$ cd mapa

Creando el Scaffold: Musician.

$ rails generate scaffold Musician latitude:float longitude:float youtube_video:string twitter:string facebook:string address:string description:string musician_name:string instrument_id:integer

(*el campo instrument_id:integer es una clave foranea del scaffold Instrument que realizaremos a continuación. y el campo latitude:float longitude:float los usaremos mas adelante en la parte 2 del streetMusicmap cuanodo integremos la gem gmaps4rails)

Ejecutamos en el terminal:

$ rake db:migrate

Creando el Scaffold: Instrument.

$ rails generate scaffold Instrument instrument_name:string

Ejecutamos en el terminal:

$ rake db:migrate

Ok, ahora tenemos 2 CRUD, Musician e Instrument (usen conceptos en inglés para crear scaffolds)

Agregar Instrumentos es simple, ya que es sólo un nombre. La parte que nos interesa es cuando agregamos un Músico, y tenemos que categorizarlo mediante un combobox cargado con instrumentos.

 Modelo: Creando la relación Uno a Muchos.

Accedemos al archivo routes a través de mapa/config/routes.rb y cambiamos “welcome#index” por:

root 'musicians#index'

Al acceder por browser a nuestra vista de músicos http://locahost:3000/musicians los datos se muestran de esta manera: Nombre del Musico / ID del instrumento…pero lo que queremos ver por pantalla es el nombre del instrumento no su ID! Para lograr este proposito es que creamos la relación “uno a muchos” en el modelo:

En app/models/musician.rb escribe:

class Musician < ActiveRecord::Base
 belongs_to :instrument
end

Y en app/models/instrument.rb escribes:

class Instrument < ActiveRecord::Base
 has_many :musicians
end

la relación entre Músico e Instrumento en nuestro ejercicio específicamente se lee así:

“un Músico pertenece_a una categoría” (belongs_to)

y “Una categoría tiene_muchos Musicos”. (has_many)

 La Vista: Cambiando instrument_id.

en app/views/ musicians/ index.html.erb buscas:

<%= musician.instrument_id %>

y lo reemplazas por:

<%= musician.instrument.instrument_name %>

Refrescas el browser y verás por pantalla ahora el Nombre del instrumento en lugar de su ID..mucho mejor!

 El Controller: Modificando el método new

Al mostrar la view /musicians/new tenemos que agregar un nuevo objeto @instruments, el cual recibirá todos los registros que el Modelo le devuelva y esos datos lo vamos a cargar en un combobox.

En app/controllers/musicians_controller.rb busca:

def new
 @musician = Musician.new
end

y lo reemplazas por:

def new
 @musician = Musician.new
 @instruments = Instrument.all
end

Ahora en la vista parcial app/views/musicians/_form.html.erb busca:

<%= f.number_field :instrument_id %>

y reemplázalo por este helper: (ésta línea dibuja el combobox de instrumentos por pantalla)

<%= collection_select(:musician, :instrument_id, @instruments, :id, :instrument_name, prompt: true) %>

Desde tu navegador ingresa a:

http://localhost:3000/musician/new

Excelente! 🙂 Ahora vemos un Combobox para categorizar a nuestros musicos. Más info sobre este Helper collection_select aquí!

Seguramente si accedes a la view “edit” verás un error, eso es porque tenemos que agregar un objeto @instruments en el método “edit” del controller musician ya que también al editar un registro de músico, necesitamos ver el combobox cargado pero posicionando en primer item el instrumento que le pertenece a este músico.

En app/controllers/musicians_controller.rb busca:

def edit

end

y lo reemplazas por:

def edit
 @musician = Musician.find(params[:id])
 @instruments = Instrument.all
end

Ya estamos casi terminando nuestra primera parte de la aplicación, sólo un detalle más…

En app/views/musicians/show.html.erb busca:

<%= @musician.instrument_id %>

y lo reemplazas por:

<%= @musician.instrument.instrument_name %>

Y ya tienes una aplicación uniendo 2 scaffolds y cargando un combobox en la Vista.

pd: Se viene luego la parte 2: Ahora te recomiendo ir por una buena taza de café y luego revisa el tutorial parte 2: Integración con google maps y la gema Gmaps4Rails.

Dec 11, 2014Daniela Gattoni
Share Button
  • El Autor
  • Últimos Posts
Daniela Gattoni

About Daniela Gattoni

Software Engineering Student at USM, Santiago, Chile. Web Designer & programmer. #hack4good Santiago 1st place 2014 with #BringYourCup app.
  • Friendly URL en Rails - March 8, 2015
  • Borrar un Scaffold en Ruby on Rails - January 24, 2015
  • “My Concerts Wishlist” ajax scaffold Ruby on Rails - January 1, 2015
  • StreetmusicMap parte 2: Integración Gmaps4Rails - December 12, 2014
  • StreetmusicMap parte 1: Combobox uno a muchos en Ruby on Rails - December 11, 2014
  • Twitter Search API + Ruby on Rails (II parte) - September 24, 2014
  • Twitter Search API + Ruby on Rails - September 24, 2014
  • SSL error: Certificate Verify Failed - September 18, 2014
10 years ago Ruby, Tutorialesgmaps4rails, google maps, Ruby on Rails, Tutoriales4,181
ASESINANDO TU STARTUP CON JAVASCRIPT.StreetmusicMap parte 2: Integración Gmaps4Rails
You Might Also Like
 
Buscando imágenes en google sin violar derechos de autor
 
Actualización de vistas parciales de Rails en tiempo real

Leave a Reply Cancel reply

Tags
mostbetslotticamostbet UZslottica PLRuby on Railsaviatoraviator KZozwincasinoozwincasino AUemprendimientos digitalesfortunetiger BRfortunetigerTutorialesDiseñoLondonLondon UZbj88slottica BRHerramientashtml5WordpressrubyLanding Pageparty poker casinogratogana juegos en vivoแทงบอลออนไลน์Bases de datoswash serviceหวยออนไลน์gratogana entrar20bet plkudos casino no deposit bonus 2024kudos casino loginTallereshackathonkudos casino no deposit bonuspartycasino entrarHeroku1win AZ1winTipsPáginas WebNitrousInspiracióncbd
  • PADANGTOTO
  • PADANGTOTO
  • PADANGTOTO
  • PADANGTOTO
  • PADANGTOTO
  • PADANGTOTO
  • PADANGTOTO
  • PADANGTOTO
  • PADANGTOTO
  • PADANGTOTO
  • PADANGTOTO
  • PADANGTOTO
  • PADANGTOTO
  • PADANGTOTO
  • PADANGTOTO
  • PADANGTOTO
  • PADANGTOTO
  • PADANGTOTO
  • PADANGTOTO
  • PADANGTOTO
  • PADANGTOTO
  • PADANGTOTO
  • Interesado en otros tipos de emprendimiento?

    Quieres aprender a importar y exportar productos a todo el mundo? entra aquí

  • LOMBOKTOTO
  • LOMBOKTOTO
  • LOMBOKTOTO
  • LOMBOKTOTO
  • LOMBOKTOTO
  • LOMBOKTOTO
  • LOMBOKTOTO
  • LOMBOKTOTO
  • LOMBOKTOTO
  • LOMBOKTOTO
  • LOMBOKTOTO
  • LOMBOKTOTO
  • LOMBOKTOTO
  • LOMBOKTOTO
  • No te pierdas ningún artículo.

  • RAMALANTOTO
  • RAMALANTOTO
  • RAMALANTOTO
  • RAMALANTOTO
  • RAMALANTOTO
  • RAMALANTOTO
  • RAMALANTOTO
  • RAMALANTOTO
  • RAMALANTOTO
  • RAMALANTOTO
  • RAMALANTOTO
  • RAMALANTOTO
  • RAMALANTOTO
  • RAMALANTOTO
  • 2016 © En 1 Mes